当我再做一次rebase时,为什么我需要再次解决我的更改

时间:2015-01-20 19:49:52

标签: git branching-and-merging rebase remote-branch

我有两个分支,mastermy-work-branch

其他人会将更改推送到master,因此我需要my-work-branchmaster保持同步,这样我才能获得其他人的更改

我尝试使用以下命令经常从my-work-branch反对master分支

git rebase origin/master

我两天前做过,所以my-work-branch中的git登录是这样的:

merge change from master
my change a
my change b
my change c
...
latest change from master two days ago

今天我再次运行相同的rebase命令,(在这两天内,my-work-branch我没有任何更改,我所做的就是尝试从master获得新的更改

但是,我注意到git应用了我的更改(a, b, c ...)两次(我可以在git log中看到它),并且它也会导致冲突,所以我需要解决冲突。

有谁知道为什么会这样? git rebase使my-work-branchmaster分支同步是错误的方法吗?

1 个答案:

答案 0 :(得分:0)

Git rebase完全可以保持分支同步,事实上有些人(比如我)更喜欢它而不是推/合并技术作为保持更直接历史的方法。但你必须习惯这个命令。

我认为您经常git fetchorigin/master与其他人的更改保持同步。

在这种情况下,在重复的rebase上发生冲突是正常的,因为上游(origin/master)可能会有新的变化导致它。

我不确定为什么你会两次看到相同的提交,可能是因为你的版本不完整?

为了检查发生了什么,您可以git rebase abort在开始使用rebase之前恢复状态,并执行git rebase -i origin/master - 它会向您显示已选择放在其上的提交origin/master。如果超出预期 - 您的分支状态出现问题。

您还可以使用git log <my branch> --not origin/mastergit log origin/master --not <my branch>的组合来轻松查看上游但不在您的分支中的提交,反之亦然。