如果提交已经完成并推送到存储库,并且如果想更改某个特定提交的作者,我可以这样做:
git commit --amend --reset-author
但是,这会改变原来的 promise 日期。
如何重置作者,但保留原始提交者的日期?
最佳答案
正如您可能会使用的其他一些答案中提到的:
git commit --amend --reset-author --no-edit --date="<old-date>"
虽然这行得通,但需要大量手动复制或输入才能确定旧日期。您可能希望通过仅获取日志中最后一个条目的日期来自动获取日期:
git log -n 1 --format=%aD
结合两者并使用一些 shell 魔法:
git commit --amend --reset-author --no-edit --date="$(git log -n 1 --format=%aD)"
这会自动将日志中最后一次提交的日期(也就是要修改的日期)设置为更改作者的新提交日期。
现在更改大量提交的作者,比如说因为你忘记在克隆的 git 仓库中设置作者,交互式 rebase 是你的 friend :
git rebase -i <commit before wrong author and email>
然后,您将要调整的所有提交从 pick
更改为 edit
并保存文件。 Git 在每个要编辑的提交上停止,然后您重新运行:
git commit --amend --reset-author --no-edit --date="$(git log -n 1 --format=%aD)" && \
git rebase --continue
如果提交次数合理,您可以使用 shell arrow-up
键重复此命令,直到 rebase 完成。如果有大量的提交,输入 arrow-up
+ return
变得太乏味了,你可能想要创建一个小的 shell 脚本来重复上面的命令直到 rebase完成。
关于git - 如何更新git提交作者,但修改时保留原始日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41301627/