3

如何更改/删除提交历史?

我一直在家用计算机上处​​理一个项目,其中 git config user.name 与办公室的不同。我不希望刻痕混在一起。我已经将代码推送到了官方仓库。

截至目前,在提交历史记录中,我的日志为:由“my_home_nick”提交

但我希望所有提交消息都显示为:由“my_office_nick”提交

有没有这样做?

简而言之,有日志: 由 x 提交

我希望将其更改 为由 y 提交

4

4 回答 4

2

是的,看git filter-branch命令。它会根据需要重写历史记录。

请记住,它将创造一个的历史。创建新历史并将分支指向它在 git 中称为“倒带”,如果您使用更常见的命令(如git rebase. 只要没有人根据旧历史进行工作就可以了,但是如果他们这样做了,就会引起很多混乱。由其 SHA1 哈希标识的现有历史是不可变的。

于 2011-12-06T14:48:30.663 回答
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
于 2011-12-07T11:09:02.350 回答
0

您可以使用以下一个或多个选项

  1. 您可以使用命令 git rebase --interactive 压缩/重新组织提交

  2. 如果您没有使用 my_home_nick 将更改推送到官方存储库,您可以创建另一个克隆并使用正确的用户名提取/合并更改

  3. 您可以使用 git filter-branch 来修复提交者名称

于 2011-12-06T14:51:16.143 回答
0

是同一个问题,有很多答案。

你说你推送到“官方存储库”,但如果你不是这个存储库的唯一提交者,并且有人已经提交了不正确的提交,或者更糟糕的是,基于你的提交进行了一些更改,那么留下不正确的提交者名称将减少混乱然后更改历史,因为 git 确实不允许更改提交,它只允许创建替代历史来代替不正确的历史,正如 Jan Hudec 已经写的那样。

于 2011-12-06T15:28:51.860 回答