【问题标题】:How to edit commit author without changing date?如何在不更改日期的情况下编辑提交作者?
【发布时间】:2019-12-08 08:21:25
【问题描述】:

我已经知道如何更改提交的作者(作者和提交字段),

git rebase --root --exec "git commit --amend --reset-author --no-edit"

但随着作者的更改,日期(作者日期和提交日期)从当前日期开始更改。如何在保存旧日期的同时更改作者?

【问题讨论】:

  • git-scm.com/docs/git-filter-branch,尤其是--env-filter
  • @user3159253 我发现了一些建议这种方法的问题。但这对我没有帮助。
  • 请准确描述您在尝试filter-branch aprroach 时遇到的问题。我很确定它确实有帮助,因为我不久前确实解决了类似的问题。如果我知道你的任务的所有情况,特别是你需要重写多少次提交、多少个分支等等,我可以提供一个准确的解决方案......
  • @user3159253 2 个分支(master,develop),每个提交都来自 root
  • @user3159253 好的,我在 git pro 中找到了有关 filter-branch 的信息,然后是 this 教程。所以我解决了我的主要问题。谢谢你。附:你能告诉我更多关于 --msg-filter 的信息吗,我如何指向正确的提交进行重写?

标签: git commit rebase


【解决方案1】:

这不是您问题的完整解决方案,因为提交日期仍在更新(毕竟这确实会更改提交),但它可能适合任何只想保留作者日期不变。

您可以明确设置作者,而不是使用--reset-author 来更新作者日期。

git rebase --root --exec "git commit --amend --author=John --no-edit"

您可以明确指定您想要作为作者的内容,或者使用搜索模式(上面的示例就是这样做的)。

--作者=

覆盖提交作者。使用标准 A U Thor 格式指定明确的作者。否则被假定为一种模式并用于搜索该作者的现有提交(即 rev-list --all -i --author=);然后从找到的第一个此类提交中复制提交作者。

Source

【讨论】:

    【解决方案2】:

    使用--ignore-date 标志或--committer-date-is-author-date

    git rebase --ignore-date
    

    【讨论】:

    • 我尝试将您的建议命令与我的:$ git rebase --root --ignore-date --exec "git commit --amend --reset-author --no-edit" 结合起来,结果致命:无法将 am 选项与交互式或合并选项结合起来
    【解决方案3】:

    以上所有答案都不适用于我。相反,我使用 git filter-repo 和 --mailmap 选项。安装 git 扩展后,请按照以下步骤操作:

    1. 像这样创建一个my_mailmap 文件:

      New Name <new-mail@address.com> Old Name <old-mail@address.com>
      
    2. 在您的 repos 根目录中运行以下命令:

      git filter-repo --mailmap my_mailmap
      

      (我还需要--force 选项)

    但请注意,这会替换整个历史记录中的邮件地址和姓名,请确保您知道自己在做什么。您可以使用git show -s --format=fuller 分别确认提交的作者和提交者日期:

    Author:     Author Name <mail@address.com>
    AuthorDate: Wed Dec 30 10:27:44 2020 +0100
    Commit:     Commiter Name <mail@address.com>
    CommitDate: Wed Dec 30 10:27:44 2020 +0100
    

    【讨论】:

      猜你喜欢
      • 2022-01-15
      • 2011-07-09
      • 2020-09-25
      • 1970-01-01
      • 2022-10-15
      • 2021-02-15
      • 1970-01-01
      • 2014-12-10
      • 2013-09-10
      相关资源
      最近更新 更多