为什么合并而不是快进?

时间:2012-02-14 11:23:12

标签: git merge fetch rebase

我刚刚做了一些新的改变 接下来我做了git fetch然后git merge origin/master HEAD已快速转发。

我继续添加3个提交。
然后,我重复这个过程git fetchgit merge origin/master 这次,进行了合并。

所以,我做了git reset --soft HEAD^

现在回到合并前的舞台 我检查了更改的文件(git status)是否与我的本地提交不同。 但它的说法

On branch master  
Your branch and 'origin/master' have diverged,  
and have 3 and 1 different commit(s) each, respectively.

我认为合并是因为分支分歧。

分支为何分歧?

如果我不想进行合并,是否可以进行rebase(就像快进一样)?

2 个答案:

答案 0 :(得分:2)

分支因为有人对遥控器进行了更改而分歧。如果你这样做

git pull --rebase

它会使你的工作在分歧上有所改变,并给你你想要的东西。

答案 1 :(得分:0)

分支分歧是因为有人将提交推送到该远程分支,然后在git fetch

时提取了它们

如果只是快进,你可以这样做:

git fetch
git rebase origin/master

git pull --rebase,但我更喜欢在分开的步骤中获取和重新定位。

他们都会快进并在分支的顶部应用您的本地更改。

假设你从同一个远程分支分支并且正在重新定位一个rebase:

  • 将您最后一次重组或分支的所有本地提交放在一边
  • 快速转发分支以匹配远程分支
  • 逐个应用您的本地提交。如果存在冲突,则会合并它们。如果无法合并,则必须手动编辑它们。

所以一个rebase不会搞砸了。当我正在关注正在进行主动编辑的远程分支并且我有一些提交时,我更喜欢重新定位,以便我的更改都在提交列表的顶部。