所以我有一个 master 分支,我们称之为 foo,我已经使用了一段时间,在大约 50 次提交之后,我得到了一个相当复杂的合并历史,因为 foo 有自己的一些子分支。这里的历史对我来说并不重要,所以我决定通过重新设置每个分支并将所有提交压缩为一个来清理事情,这样我就只有一个提交代表 master 和那个分支之间的差异。
起初我以为我可以这样做:
git checkout foo
git rebase master
但这对我不起作用。该分支有超过 50 次提交,每次都涉及许多文件,并且每次提交都会遇到一堆冲突。
相反,我最终做的是:
git checkout foo
<copy all files to another folder>
git checkout master
git branch -D foo
git checkout -b foo
<overwrite all files with the copy I made earlier, and create a new commit>
这满足了我将合并的悠久历史转变为单个压扁的变基的需要,而无需处理沿途的所有冲突,但我只是想知道是否有一种更“git-friendly”的方式来做到这一点?