我有两个分支,master
和my-work-branch
其他人会将更改推送到master
,因此我需要my-work-branch
与master
保持同步,这样我才能获得其他人的更改
我尝试使用以下命令经常从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-branch
与master
分支同步是错误的方法吗?
答案 0 :(得分:0)
Git rebase完全可以保持分支同步,事实上有些人(比如我)更喜欢它而不是推/合并技术作为保持更直接历史的方法。但你必须习惯这个命令。
我认为您经常git fetch
让origin/master
与其他人的更改保持同步。
在这种情况下,在重复的rebase上发生冲突是正常的,因为上游(origin/master
)可能会有新的变化导致它。
我不确定为什么你会两次看到相同的提交,可能是因为你的版本不完整?
为了检查发生了什么,您可以git rebase abort
在开始使用rebase之前恢复状态,并执行git rebase -i origin/master
- 它会向您显示已选择放在其上的提交origin/master
。如果超出预期 - 您的分支状态出现问题。
您还可以使用git log <my branch> --not origin/master
和git log origin/master --not <my branch>
的组合来轻松查看上游但不在您的分支中的提交,反之亦然。