我已经知道如何修改提交的作者(author和commit字段),
git rebase --root --exec "git commit --amend --reset-author --no-edit"
但是随着作者的改变,日期(作者日期和提交日期)会从当前日期起改变。我如何在保存旧日期的同时改变作者?
798qvoo81#
这不是一个 * 完整 * 的解决方案,因为提交日期仍然是更新的(这毕竟改变了提交),但它可能适合任何只想保持作者日期不变的人。您可以直接显式设置作者,而不是使用--reset-author同时更新作者日期。
--reset-author
git rebase --root --exec "git commit --amend --author=John --no-edit"
您可以明确地指定您想要的作者,或使用搜寻模式(这就是上面范例的作用)。--作者=重写提交作者。使用标准的A U Thor格式指定一个明确的作者。否则将被假定为一个模式,并用于搜索该作者的现有提交(即rev-list --all -i --author=);然后从找到的第一个这样的提交复制提交作者。来源
wtlkbnrh2#
上面的答案在这里都不适用,我使用了git filter-repo和--mailmap选项。安装git扩展后,按照以下步骤操作:1.创建一个my_mailmap文件,如下所示:
--mailmap
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分别确认提交的作者和提交日期:
--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
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>
8ehkhllq4#
使用--ignore-date标志或--committer-date-is-author-date
--ignore-date
--committer-date-is-author-date
git rebase --ignore-date
4条答案
按热度按时间798qvoo81#
这不是一个 * 完整 * 的解决方案,因为提交日期仍然是更新的(这毕竟改变了提交),但它可能适合任何只想保持作者日期不变的人。
您可以直接显式设置作者,而不是使用
--reset-author
同时更新作者日期。您可以明确地指定您想要的作者,或使用搜寻模式(这就是上面范例的作用)。
--作者=
重写提交作者。使用标准的A U Thor格式指定一个明确的作者。否则将被假定为一个模式,并用于搜索该作者的现有提交(即rev-list --all -i --author=);然后从找到的第一个这样的提交复制提交作者。
来源
wtlkbnrh2#
上面的答案在这里都不适用,我使用了git filter-repo和
--mailmap
选项。安装git扩展后,按照以下步骤操作:1.创建一个
my_mailmap
文件,如下所示:1.在存储库根目录中运行以下命令:
(我另外还需要
--force
选项)不过要注意,这会替换整个历史记录中的邮件地址和名字,确保你知道自己在做什么。你可以用
git show -s --format=fuller
分别确认提交的作者和提交日期:e37o9pze3#
我回答这个here .简而言之:
8ehkhllq4#
使用
--ignore-date
标志或--committer-date-is-author-date