2017-01-24 42 views
16

我使用Git正在申請在我的倉庫頂部的開源項目的diff file混帳:空IDENT名稱(<>)不允許

git am -3 < /Downloads/refactorWork.diff 

但它有衝突,我不得不解決它們;但解決衝突和分期他們之後,當我做混帳上午--continue我得到:

fatal : empty ident name (for <>) not allowed 

我擡起頭,在互聯網上發現this這似乎是類似我的問題,但我USENAME和電子郵件是已經加入了全局和本地git目錄。這裏是混帳配置列表的輸出:

[email protected]~/Documents/libo : $ git config --global --list 
[email protected] 
user.name=Rohan Kumar 
alias.l=log --oneline --graph --pretty 
credential.helper=cache 

雖然我解決了這個由第一commiting階段性變化,然後使用git am --skip,我想知道那有什麼錯誤的手段和是否我所做的是正確的方法做這件事,還是有更好的辦法?

回答

14

此差異文件是一個普通的差異,而不是由git format-patch生成的東西。 A format-patch generated diff包含有關提交作者,作者日期,提交消息等信息,並在創建提交時維護此信息。

您的普通差異沒有這些信息,因此git am會抱怨它自然缺失。

您應該改爲使用git apply,這意味着應用簡單的修補程序文件,就像您在這種情況下那樣只會將修補程序應用於工作樹(如果您告訴它,則爲索引),但不會自動創建任何提交。

+0

哦,所以它抱怨diff文件。感謝您澄清我的疑問。我知道這個補丁會導致衝突。 git apply在這種情況下會失敗,這就是爲什麼我使用git,因爲我讀到它顯示了衝突並給出瞭解決它們的機會。 –

+2

由於所討論的補丁有blob,所以它是針對註釋創建的 - 由於您的存儲庫中有可用的blob,因此您可以使用「-3」回退到三路合併,最終導致帶有衝突標記的文件爲你解決。除此之外,您可以使用'--reject'來應用適用的hunks,併爲不適用於查看和手動應用的hunks創建'.rej'文件。如果沒有任何選擇,'apply'將會在整個補丁失敗時失敗,這是正確的。但內部'git am'也使用'git apply'。 – Vampire

+0

也許'git am'通過設置'GIT_AUTHOR_EMAIL'和/或'GIT_AUTHOR_NAME'環境變量可以正常工作。 – Vampire