git:不允许空标识名(用于〈>)

42fyovps  于 2023-04-10  发布在  Git
关注(0)|答案(4)|浏览(167)

我使用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解决了这个问题,但我很想知道这个错误意味着什么,以及我所做的是否是正确的方法,或者是否有更好的方法?

ddrv8njm

ddrv8njm1#

我有一个看起来非常好的补丁,包括一个提交消息,作者:报头等。
我比较了git-format-patch的输出,注意到它使用了From:标题而不是作者:标题。
当然,如果你改变作者:对于From:,git-am会干净地应用更改。

zlwx9yxi

zlwx9yxi2#

这个diff文件是一个普通的diff,不是由git format-patch生成的。一个format-patch生成的diff包含了提交作者,作者日期,提交消息等信息,并在创建提交时维护这些信息。
您的普通diff没有这些信息,所以git am自然会抱怨缺少这些信息。
你应该使用git apply,它是用来应用简单的补丁文件的,就像你在这个例子中所做的那样,它只会将补丁应用到工作树(如果你告诉它的话,也会应用到索引),但不会自动创建任何提交。

a0x5cqrl

a0x5cqrl3#

使用

git apply -3 patchName.patch

遇到冲突时,请打开mergtool并解决冲突
git mergetool
这就是全部:)

drkbr07n

drkbr07n4#

  • 已从评论中移出,选择接受的答案 *

当你在TortoiseGit中点击“保存unified diff”时,你必须右键点击创建的.diff.patch文件,并选择TortiseGit→Review/apply single patch而不是Apply Patch Serial...
首先,将diff文件放在要对其应用补丁的文件夹的根目录下。

相关问题