我有一個修補程序文件。git:修補程序沒有有效的電子郵件地址
我想將這個補丁應用到我在git倉庫中的代碼。
當我使用subversion時,這個過程非常簡單:右擊 - > tortoise svn - >應用補丁。它始終如我所願。
但我不能這樣使用git。 Git不適用我的補丁。它抱怨
修補程序沒有有效的電子郵件地址。
所以,我的問題是: 「如何在這種情況下應用補丁文件?」
我有一個修補程序文件。git:修補程序沒有有效的電子郵件地址
我想將這個補丁應用到我在git倉庫中的代碼。
當我使用subversion時,這個過程非常簡單:右擊 - > tortoise svn - >應用補丁。它始終如我所願。
但我不能這樣使用git。 Git不適用我的補丁。它抱怨
修補程序沒有有效的電子郵件地址。
所以,我的問題是: 「如何在這種情況下應用補丁文件?」
Git創建的補丁意在與Git工具一起使用。使用
git apply <patch>
如果補丁不是用Git創建的,那麼就使用Git後面的補丁程序。通常這是程序'補丁':
patch <patch>
應用補丁後,像往常一樣在Git中添加和提交。
如果它對你使用圖形界面而不是命令行更有幫助,那裏有相當多的工具可以使它在Git中做很多事情比較簡單,包括應用修補程序)。我找到的最有幫助的是SourceTree,但我相信如果您搜索,那裏還有其他好的東西。
此工程與mbox從下載的文件pipermail許多開源項目使用。這在OP的情況下可能不起作用,但當使用提取的消息/補丁使用git am
和pipermail時,會出現相同的症狀/問題結果。
製作該文件的備份和編輯,以添加一行,
From: [email protected] (Proper Name)
常行已經存在,但反垃圾郵件功能可能已經轉換的@
標誌文本在。您可以修補一堆文件與GNU sed
命令一樣,
sed -ie 's/\(From:.*\) at /\[email protected]/' *.patch
這只是取代了「在」與@
標誌。在此之後,git am
應該接受它。
如果您有機會獲得你可以使用常規的命令Git倉庫,
git checkout oldbranch
git format-patch HEAD~4
這將使四個文件是最後修改補丁(更改號碼你的情況)。git checkout master
git am *.patch
你會得到同樣提交IDS,信息等作爲遠程倉庫,可以以後會有用。
工具,比如gitk和kdiff做不產生相同的數據格式補丁和你沒有得到提交歷史。如果你有這種類型的數據,你必須使用git apply
或者像上面那樣生成補丁。
在.patch文件中添加電子郵件地址後,git抱怨缺少SHA哈希值。我想我會嘗試GoZoner的回答。 –
我有我的本地回購,一年前從國外項目中複製了一些源代碼。同時該項目已更新,以及我本地的回購。我想要納入國外的改進。通過將最新版本複製到舊分支並顯示所有差異,我對外國項目做了一系列修改。我還沒有找到一個工具,將這個統一的差異應用到我的本地回購。 –
我終於用kdiff3做了,但沒有使用我以前創建的補丁。 –
如果您的提交消息中有一行以From:
開頭的行,則可能出現此錯誤。例如,我有一個補丁,其中我固定一個錯字,並且在提交消息的主體我有:
Fixes a typo.
From: 873524cab1 "Introduced some bug on this commit"
的.patch文件,由格式補丁生成有兩個From:
線,其中之一是電子郵件地址,另一個是我糟糕的消息。 Git正在拿起第二個From:
行,並試圖找到電子郵件地址。
修復方法是將行提交消息更改爲不在行的開頭處有From:
。
正是這個命令不起作用。我上面寫道,git抱怨錯過了電子郵件。 – tmporaries
您是否使用Git創建了修補程序? – GoZoner
不可以。這是由龜差異查看器生成的「統一」補丁格式。 – tmporaries