【问题标题】:git : empty ident name (for <>) not allowedgit:不允许空身份名称(用于<>)
【发布时间】:2017-01-24 16:09:38
【问题描述】:

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

 git am -3 < /Downloads/refactorWork.diff

但它有冲突,我必须解决它们;但是在解决冲突并暂存它们之后,当我执行 git am --continue 时,我得到了:

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

【问题讨论】:

    标签: git github


    【解决方案1】:

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

    您的普通 diff 没有这些信息,所以 git am 会抱怨它自然丢失。

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

    【讨论】:

    • 哦,原来是在抱怨 diff 文件。感谢您消除我的疑问。我知道补丁会导致冲突。在这种情况下 git apply 会失败,这就是我使用 git am 的原因,因为我读到它显示了冲突并提供了解决它们的机会。
    • 由于有问题的补丁具有针对它创建的 blob 的注意事项 - 假设您的存储库中有这些 blob - 您可以使用 -3 最终退回到三向合并导致带有冲突标记的文件供您解决。除此之外,您可以使用--reject 应用适用的帅哥并为不适用于审查和手动应用的帅哥创建.rej 文件。如果没有任何选项,apply 如果某些内容不适用,则整个补丁程序都会失败,这是正确的。但在内部git am 也使用git apply
    • 通过设置GIT_AUTHOR_EMAIL 和/或GIT_AUTHOR_NAME 环境变量,也许git am 可以正常工作。
    • 如果有人想知道,TortoiseGit 的“应用”按钮似乎实际上是在运行git am,而不是git apply。此外,“创建补丁序列”按钮似乎可以创建普通补丁。 (半相关):我不确定我是否在这里遗漏了什么,但这似乎是一个奇怪的设计决定。如果 Tortoise 通过 GUI 生成补丁,如果不回退到 git 命令行就无法使用,这似乎是在为人们做准备。
    • 我认为您没有正确使用它。如果您使用“创建补丁序列”并单击“确定”,它使用format-patch 创建补丁,如果您使用“应用补丁序列”,它使用am 播放补丁。如果您使用“创建补丁序列”并使用“自 HEAD 后保存统一差异”,它会创建一个普通差异,并且可以通过右键单击补丁文件并使用“查看/应用单个补丁”来播放。即使您只有一个format-patch 生成的补丁文件,您也应该使用“Apply Patch Serial”。
    【解决方案2】:

    使用,

    git apply -3 patchName.patch

    当您遇到冲突时,打开您的 mergtool 并解决冲突

    git 合并工具

    就是这样:)

    【讨论】:

      【解决方案3】:

      已取消对已接受答案的评论

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

      首先将差异文件放在要应用补丁的文件夹的根目录中。

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          猜你喜欢
          • 2018-04-30
          • 1970-01-01
          • 1970-01-01
          • 2021-08-14
          • 2023-04-09
          • 2021-03-23
          • 1970-01-01
          • 2014-02-19
          • 2015-12-25
          相关资源
          最近更新 更多