2

我正在向 git 提交一个大文件,在编辑提交消息文件时,我的编辑器似乎搞砸了。结果是~100k 行的整个差异变成了我的“提交消息”。现在,每次我在存储库中加载页面时,都会减慢整个 git 服务器的速度。

我知道我可以简单地在我的主分支上运行交互式 rebase 来编辑提交消息。

不幸的是,当我意识到这一点时,有问题的提交已经被合并到主分支中,并从那里合并到其他几个分支中。那么这是否意味着我必须跟踪每个分支中的提交并在其上重复变基?

我记得在 git 中,提交是不可变的对象,而分支只是提交上的标签。所以并不是说“多个分支有一个commit”,而是一个commit 可以是多个分支的成员。这是否意味着如果我只在 master 分支上编辑提交,其他分支也将被修复?或者不是这样,因为交互式 rebase 只是用我编辑的消息创建了一个新的提交,而不是从字面上编辑原始提交对象?

4

1 回答 1

1

如果您想编辑您的历史记录,所有解决方案的共同点是:

  • 你将不得不强制推动结果,
  • 您将不得不告诉每个人采取必要的步骤将他们的工作转移到新的历史记录中,这样他们下次推送到中央回购时就不会上传旧的历史记录。

要为所有分支重写该特定提交,请查看git filter-repoorgit filter-branch而不是git rebase.

于 2021-12-02T12:48:33.780 回答