2012-02-14 59 views
0

我刚刚做了一些新的更改。
接下来我做了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

由于有人对遥控器进行了更改,因此该分支不同。如果你这样做

 
git pull --rebase 

它会重新分配你的工作分歧,并给你你想要的。

0

分支分歧,因为有人推提交到远程分支,然后你拿来他们当你git fetch

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

git fetch 
git rebase origin/master 

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

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

假设你从支链型基础重建对同一远程分支,衍合:

  • 搁置从你上次rebase或分支
  • 快进分支到远程匹配您的所有本地提交分支
  • 将逐个应用您的本地提交。如果有冲突,它们会合并。如果他们不能合并,你必须手动编辑它们。

所以一个rebase不会搞砸了。当我跟踪一个正在积极编辑的远程分支并且我有几个提交时,我更愿意重新绑定,这样我的更改全部位于提交列表的顶部。

+0

但合并发生随机。大多数情况下,当我'混合起源/主'时,它会快速前进。 在这种情况下会发生变形吗? – resting 2012-02-14 11:34:11

+0

当没有任何东西需要合并时会发生快进,否则合并(所以它不是随机的)。我更新了我的答案,以解释如何在你的情况下使用rebase。 – 2012-02-14 11:41:30

+0

好吧..不知道为什么合并执行,而不是快进?我曾经认为合并是因为同一个文件在本地和远程有不同的内容。但这次文件是不同的。 – resting 2012-02-14 11:51:23

相关问题