1

我有两个分支,master并且my-work-branch

其他人会将更改推送到master,所以我需要保持my-work-branch同步,master以便我也可以得到其他人的更改

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

git rebase origin/master

两天前我这样做了,所以 git log inmy-work-branch是这样的:

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

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

有谁知道为什么会发生这种情况?与分支git rebase保持my-work-branch同步的错误方法是什么?master

4

1 回答 1

0

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

我假设您经常这样做git fetch以使您origin/master与其他人的更改保持同步。

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

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

为了检查发生了什么,您可以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>来轻松查看存在于上游但不在您的分支中的提交,反之亦然。

于 2015-01-20T22:16:19.607 回答