如何对大量提交进行变基

How to rebase huge number of commits

我正在尝试将我的分支与上游同步。

git rebase upstream/master

但遗憾的是,我发现我的本地提交有100+,而且每一个都需要手动解决冲突。

我正在考虑的一个想法是我可以将所有本地提交压缩为一个,然后仅对一个提交进行变基会更容易。但这是我最不想要的,因为我真的很想保留我所有的提交记录。

有没有什么方法可以用更少的努力来 rebase 巨大的提交?

我认为合并实际上是您在这里想要的,而不是变基。解决合并冲突将等同于将所有 100 多个提交压缩为单个提交,然后重新设置该提交的基础。但是通过合并,您将根据需要保留正在进行的工作历史记录。

当您只有少数提交与同行的最新工作同步,或者有特定需要重写历史记录时,Rebase 非常有用,但是当您有超过 100 次提交时,您已经创建了一个通常用分支处理的用例。在这种情况下,我认为通过合并提交同步非常有意义。

如果您真的需要成为唯一可以看到您正在进行的工作历史记录的人,您可以创建一个本地分支 (git branch <my-true-local-history>) 指向在您本地正在进行的工作的头部保留对提交的命名引用,然后执行压缩合并(git merge --squash),这仍将创建合并提交,但会折叠您的正在进行的工作提交到单个提交(但是,您之前创建的本地分支仍将指向真实的详细历史记录)。