2017-02-01 9 views
1

Не так давно я спросил this question. Я получил ответ, но это не решило проблему, с которой я столкнулся, поэтому мне было предложено создать новый вопрос более подробно.git bash shell на Windows «Ваш отредактированный кусок не применяется» (продолжение)

Чтобы повторить попытку, я получаю сообщение об ошибке при попытке вручную отредактировать кусок в оболочке Git bash в Windows при использовании git add -p (в частности, я нажимаю e при запросе интерактивной команды). Это открывает файл редактирования для hunk в Notepad ++ (мой редактор .txt по умолчанию). Даже без внесения каких-либо изменений в этот файл, я дал ошибку:

Your edited hunk does not apply


как минимальный пример, я создал репозиторий, значение git config core.autocrlf является false (я также попробовал следующий со значением, установленным на true). У меня есть .txt-файл (foobar.txt), я пишу foo и фиксирую свои изменения. Затем я меняю содержимое файла на:

foo 
bar 

, а затем закройте файл. то я git add -p foobar, и я запрос (не знаю, почему разница не получилось чисто в этом случае, но в целом работает для меня):

diff --git a/foobar b/foobar 
index 1910281..a907ec3 100644 
--- a/foobar 
+++ b/foobar 
@@ -1 +1,2 @@ 
-foo 
\ No newline at end of file 
+foo 
+bar 
\ No newline at end of file 
Stage this hunk [y,n,q,a,d,/,e,?]? 

, к которому я отвечаю e. Опять же, без внесения каких-либо изменений, я получаю ошибку:

error: patch failed: foobar:1 
error: foobar: patch does not apply 
Your edited hunk does not apply. Edit again (saying "no" discards!) [y/n]? 

Конечно, я также пытался вносить изменения в ручной ломоть редактирования файла; например, редактировать файл будет изначально выглядеть следующим образом:

# Manual hunk edit mode -- see bottom for a quick guide 
@@ -1 +1,2 @@ 
-foo 
\ No newline at end of file 
+foo 
+bar 
\ No newline at end of file 
# --- 
# To remove '-' lines, make them ' ' lines (context). 
# To remove '+' lines, delete them. 
# Lines starting with # will be removed. 
# 
# If the patch applies cleanly, the edited hunk will immediately be 
# marked for staging. If it does not apply cleanly, you will be given 
# an opportunity to edit again. If all lines of the hunk are removed, 
# then the edit is aborted and the hunk is left unchanged. 

Образец редактировать бы:

# Manual hunk edit mode -- see bottom for a quick guide 
@@ -1 +1,1 @@ 
-foo 
\ No newline at end of file 
+foo 
\ No newline at end of file 
# --- 
# To remove '-' lines, make them ' ' lines (context). 
# To remove '+' lines, delete them. 
# Lines starting with # will be removed. 
# 
# If the patch applies cleanly, the edited hunk will immediately be 
# marked for staging. If it does not apply cleanly, you will be given 
# an opportunity to edit again. If all lines of the hunk are removed, 
# then the edit is aborted and the hunk is left unchanged. 

Еще один интересный момент в том, что у меня есть освобождение разработчика от Windows, которая позволяет мне использовать «Bash on Ubuntu on Windows». Используя git add -p с помощью этой утилиты, а затем попытайтесь вручную отредактировать ханки, это сработает ... так что мой вопрос в том, почему он не работает на оболочке Git bash для меня ...?

ответ

1

У меня была такая же проблема; У меня есть core.autocrlf установлен в true, и я использую Notepad ++ в качестве моего редактора.

У меня есть все пробелы, сделанные видимыми, и заметили, что в # комментариях выше и ниже ханка, добавленного Git, используется LF, но сам куклер использует CR-LF. Поэтому я применил Edit-> EOL Conversion-> Windows Format. Затем я мог бы применить кусок с редактированием или без него.