git 如何编辑提交作者而不改变日期?

1l5u6lss  于 2022-12-10  发布在  Git
关注(0)|答案(4)|浏览(210)

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

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

但是随着作者的改变,日期(作者日期和提交日期)会从当前日期起改变。我如何在保存旧日期的同时改变作者?

798qvoo8

798qvoo81#

这不是一个 * 完整 * 的解决方案,因为提交日期仍然是更新的(这毕竟改变了提交),但它可能适合任何只想保持作者日期不变的人。
您可以直接显式设置作者,而不是使用--reset-author同时更新作者日期。

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

您可以明确地指定您想要的作者,或使用搜寻模式(这就是上面范例的作用)。
--作者=
重写提交作者。使用标准的A U Thor格式指定一个明确的作者。否则将被假定为一个模式,并用于搜索该作者的现有提交(即rev-list --all -i --author=);然后从找到的第一个这样的提交复制提交作者。
来源

wtlkbnrh

wtlkbnrh2#

上面的答案在这里都不适用,我使用了git filter-repo--mailmap选项。安装git扩展后,按照以下步骤操作:
1.创建一个my_mailmap文件,如下所示:

New Name <new-mail@address.com> Old Name <old-mail@address.com>

1.在存储库根目录中运行以下命令:

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
e37o9pze

e37o9pze3#

我回答这个here .简而言之:

git -c rebase.instructionFormat='%s%nexec GIT_COMMITTER_DATE="%cD" GIT_AUTHOR_DATE="%aD" git commit --amend --no-edit --reset-author' rebase -i <commit before wrong author and email>
8ehkhllq

8ehkhllq4#

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

git rebase --ignore-date

相关问题