git am: Ошибка определения формата исправления.Git применять также не удается - PullRequest
0 голосов
/ 05 мая 2019

Я пытаюсь изучить git patching, поэтому я настроил тестовое репо и сделал несколько коммитов.

Затем я создал патч: git format-patch -1 HEAD --stdout > changes.patch

Затем я извлек новую ветку и попытался использовать change.patch: git am .\changes.patch. Это дает мне ошибку Patch format detection failed.

Я искал здесь, и нашел этот связанный вопрос .

Итак, я попытался git apply .\changes.patch. Это дает мне error: unrecognized input.

Файл с патчем мне кажется неподготовленным:

From 1c054c05bc528afbd929a1744fcacf9d70069246 Mon Sep 17 00:00:00 2001
From: MyUsername <my.email@gmail.com>
Date: Sat, 4 May 2019 22:43:32 -0400
Subject: [PATCH] Commit 4

---
test.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/test.txt b/test.txt
index 58ef11d..763fe4e 100644
--- a/test.txt
+++ b/test.txt
@@ -1,3 +1,4 @@
 Initial commit
 Commit 2
-Commit 3
\ No newline at end of file
+Commit 3
+Commit 4
\ No newline at end of file
-- 
2.21.0.windows.1

Я подумал, что это может быть патч в том же каталоге, что и репозиторий, поэтому я переместил его в другой каталог. Результаты одинаковы.

Я также заметил, что у многих в команде было <, поэтому я попробовал: git am < ..\changes.patch. Видимо, это неверный синтаксис.

Это использует 64-битный Git на Windows с PowerShell.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 05 мая 2019

Попробуйте cat .\changes.patch | git am.

Но я понятия не имею, почему git am .\changes.patch не может работать.

Обновление:

changes.patch в USC-2 Little Endianпо умолчанию.После изменения на UTF-8, git am .\changes.patch работает.

0 голосов
/ 05 мая 2019

Хотите создать патч из HEAD? Тогда вы можете просто сделать следующее:

Для сохранения патча:

git show HEAD > /some/location/patch.txt

Чтобы применить патч:

git apply /some/location/patch.txt

Если вы хотите создать патч из набора коммитов, вы можете сделать:

git diff OLDEST_COMMIT..NEWEST_COMMIT > /some/location/patch.txt

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

git diff origin/master...origin/new_feature > /some/location/feature.patch

Обратите внимание на три точки, они означают, что вы хотите, чтобы изменения, содержащиеся в origin/new_feature, касались общего предка двух ветвей.

...