如何更改/删除提交历史记录?更改git提交历史记录,但保留更改
我一直在从我的家用电脑上开发一个项目,其中git config user.name与办公室中的不同。 我不想让刻痕混在一起。 我已经将代码推送到官方存储库。
在提交历史,截至目前,我有记录为: 由“my_home_nick”
承诺,但我希望所有的提交信息的显示为: 由“my_office_nick”
承诺有没有做这件事?
总之说,有日志: 通过X
致力于我想,要改变以 致力于为y
如何更改/删除提交历史记录?更改git提交历史记录,但保留更改
我一直在从我的家用电脑上开发一个项目,其中git config user.name与办公室中的不同。 我不想让刻痕混在一起。 我已经将代码推送到官方存储库。
在提交历史,截至目前,我有记录为: 由“my_home_nick”
承诺,但我希望所有的提交信息的显示为: 由“my_office_nick”
承诺有没有做这件事?
总之说,有日志: 通过X
致力于我想,要改变以 致力于为y
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="[email protected]";
GIT_AUTHOR_EMAIL="[email protected]";
git commit-tree "[email protected]";
else
git commit-tree "[email protected]";
fi' HEAD
是的,看看git filter-branch
命令。它会根据需要重写历史记录。
请记住,它会创建一个新的历史记录。创建新的历史记录并将分支指向它在git中称为“倒回”,并且如果使用更常见的命令(如git rebase
),也会发生这种情况。只要没有人把他们的工作放在旧的历史上,没关系,但如果他们这样做了,就会引起很大的混乱。现有的历史由它的SHA1哈希标识,是不可变的。
您可以使用下列选项
您可以南瓜/大整编的commit命令使用Git的变基的一个或多个--interactive
如果你还没有使用my_home_nick推变化官方仓库,你可以创建另一个克隆,并用正确的用户名进行合并/更改
你可以使用git filter-branch来修复提交者名称
Here是与许多答案相同的问题。
你说你推到了“官方仓库”,但是如果你不是这个仓库的唯一提交者,并且有人已经提交了不正确的提交,或者更糟糕的是,在提交之上进行了一些更改,留下不正确的提交者名称将会因为git确实不允许更改提交,所以它只允许创建替代历史来代替不正确,正如Jan Hudec所写的那样。
我是唯一的提交者。 – user993563
你应该考虑改写你的问题的标题......我认为通过“删除提交历史记录”你真的意思是“改变提交历史”。他们是非常不同的东西。 – meagar