我使用git-am将一个开源项目的diff file应用到我的存储库顶部:
git am -3 < /Downloads/refactorWork.diff
但是它有冲突,我必须解决它,但是在解决了冲突并将它们暂存之后,当我执行git am --continue时,我得到了:
fatal : empty ident name (for <>) not allowed
我在互联网上查找,发现this似乎与我的问题相似,但我的usename和email已经添加到全局和本地git目录中。下面是git config list的输出:
rohan@~/Documents/libo : $ git config --global --list
user.email=rohankanojia420@gmail.com
user.name=Rohan Kumar
alias.l=log --oneline --graph --pretty
credential.helper=cache
虽然我通过首先提交阶段性更改然后使用git am --skip
解决了这个问题,但我很想知道这个错误意味着什么,以及我所做的是否是正确的方法,或者是否有更好的方法?
4条答案
按热度按时间ddrv8njm1#
我有一个看起来非常好的补丁,包括一个提交消息,作者:报头等。
我比较了git-format-patch的输出,注意到它使用了From:标题而不是作者:标题。
当然,如果你改变作者:对于From:,git-am会干净地应用更改。
zlwx9yxi2#
这个diff文件是一个普通的diff,不是由
git format-patch
生成的。一个format-patch
生成的diff包含了提交作者,作者日期,提交消息等信息,并在创建提交时维护这些信息。您的普通diff没有这些信息,所以
git am
自然会抱怨缺少这些信息。你应该使用
git apply
,它是用来应用简单的补丁文件的,就像你在这个例子中所做的那样,它只会将补丁应用到工作树(如果你告诉它的话,也会应用到索引),但不会自动创建任何提交。a0x5cqrl3#
使用
git apply -3 patchName.patch
遇到冲突时,请打开mergtool并解决冲突
git mergetool
这就是全部:)
drkbr07n4#
当你在TortoiseGit中点击“保存unified diff”时,你必须右键点击创建的
.diff
或.patch
文件,并选择TortiseGit→Review/apply single patch
而不是Apply Patch Serial...
。首先,将diff文件放在要对其应用补丁的文件夹的根目录下。