簡體   English   中英

git am:補丁格式檢測失敗。 git apply也失敗

[英]git am: Patch format detection failed. git apply also fails

我正在嘗試學習git patching,所以我建立了一個測試倉庫並做了一些提交。

然后,我創建了一個補丁: git format-patch -1 HEAD --stdout > changes.patch

接下來,我簽出了一個新分支,並嘗試使用changes.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 顯然,這是無效的語法。

在帶有PowerShell的Windows上使用64位git。

有任何想法嗎?

試試cat .\\changes.patch | git am cat .\\changes.patch | git am

但是我不知道為什么git am .\\changes.patch無法正常工作。

更新:

默認情況下, changes.patch位於USC-2 Little Endian 將其更改為UTF-8git am .\\changes.patch起作用。

您要從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進行更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM