在rebase之后,Git存储库不同步

Key*_*eyo 2 git version-control git-rebase

我已经将2个提交(A和B)压缩成一个新的提交(C).前两个提交(A和B)已删除.我将这些提交从我的开发仓库推送到中央(裸)存储库.该git-log两个回购确认提交A和B已被删除.问题是,当我对已经拥有(A和B)的第三个存储库进行拉动时,它现在具有所有三个提交(A,B和C).

我原以为拉动会同步这些变化.我是否需要签出A~1然后合并新的更改?这似乎很麻烦,特别是在生产环境中.

Jos*_*Lee 8

这主要包括在"从上游rebase恢复"中,但它对我的口味有点混淆.

你应该知道这git pull origin master完全等于git fetch master; git merge origin/master.换句话说,你已经要求git将B和C合并在一起.有一个原因是为了修改已经发布的变更是不可取的:因为恢复旧的提交很容易.

由于这是一个简单的壁球,git pull --rebase将能够解决这个问题.重置到错误合并之前的位置,并说git pull --rebase origin master(或者git rebase origin/master,因为您已经获取).这将神奇地将A,B和任何后来的提交移植到C上,它会注意到A + B = C.

您可能希望将其设置为默认值,因为它可以避免像这样的混乱 - 将配置设置branch.<name>.rebase为true.