git:不允许使用空标识名称(对于<>)

时间:2017-01-24 16:09:39

标签: git github

我正在使用git-am在我的存储库顶部应用diff file一个开源项目:

 git am -3 < /Downloads/refactorWork.diff

但它有冲突,我必须解决它们;但是在解决冲突和分期之后,当我做了git am - 继续我得到了:

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

我在互联网上查找并发现this似乎与我的问题相似,但我的用户名和电子邮件已经在全局和本地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 个答案:

答案 0 :(得分:21)

这个差异文件是一个简单的差异,而不是由git format-patch生成的东西。 format-patch生成的diff包含有关提交作者,作者日期,提交消息等的信息,并在创建提交时维护此信息。

您的普通差异没有这些信息,因此git am会抱怨它自然丢失。

你应该使用git apply,这意味着应用简单的补丁文件,就像你在这种情况下一样,它只会将补丁应用到工作树(如果你告诉它,还有索引),但不会创建任何补丁文件自动提交。

答案 1 :(得分:1)

将评论移至已接受的答案

当您在TortoiseGit中点击“保存统一差异”时,您必须右键单击创建的.diff.patch文件,然后选择TortiseGit→Review/apply single patch而不是Apply Patch Serial...

首先将diff文件放在要将修补程序应用到的文件夹的根目录中。

答案 2 :(得分:1)

使用

git apply -3 patchName.patch

遇到冲突时,请打开mergtool并解决冲突

git mergetool

仅此而已:)

答案 3 :(得分:0)

我有一个看起来非常好的补丁,包括提交消息、作者:标题等。

我比较了 git-format-patch 的输出,发现它使用了 From: headers 而不是 Author: headers。

果然,如果您将 Author: 更改为 From:,git-am 会干净地应用更改。