如何更改/删除提交历史记录?
我一直在从家用电脑开发一个项目,其中git config user.name与办公室的不同。 我不希望尼克斯混在一起。 我已经将代码推送到官方存储库。
在截至目前的提交历史记录中,我将日志记录为: 由“my_home_nick”承诺
但是我希望所有提交消息都显示为: 由“my_office_nick”承诺
有没有这样做?
总之说有日志: 由x
提交我希望改为 由y承诺
答案 0 :(得分:2)
是的,请查看git filter-branch
命令。它会根据您的需要重写历史记录。
请注意,它会创建新的历史记录。创建新历史并使分支指向它在git中称为“倒带”,如果使用更常见的命令,如git rebase
,也会发生这种情况。只要没有人将他们的工作建立在旧的历史上,那就很好,但如果他们这样做,就会引起很多混乱。通过它的SHA1哈希标识的现有历史是不可变的。
答案 1 :(得分:2)
git filter-branch --commit-filter '
if [ "$GIT_COMMITTER_NAME" = "your_home_nick" ];
then
GIT_COMMITTER_NAME="your_office_nick";
GIT_AUTHOR_NAME="Office Name";
GIT_COMMITTER_EMAIL="office@email.com";
GIT_AUTHOR_EMAIL="author@email.com";
git commit-tree "$@";
else
git commit-tree "$@";
fi' HEAD
答案 2 :(得分:0)
您可以使用以下一个或多个选项
您可以使用命令git rebase压缩/重组提交--interactive
如果您尚未使用my_home_nick将更改推送到官方存储库,则可以创建另一个克隆并使用正确的用户名提取/合并更改
您可以使用git filter-branch修复提交者名称
答案 3 :(得分:0)
Here是同一个问题,答案很多。
你说你推到了“官方存储库”,但如果你不是这个存储库的唯一提交者,并且有人已经提交了错误的提交,或者更糟糕的是,在提交的基础上进行了一些更改,则会导致错误的提交者名称因为git真的不允许改变提交,它只允许创建替代历史而不是错误,正如Jan Hudec所写的那样。