检出+合并和拉取之间的区别

时间:2019-02-06 10:01:36

标签: git git-merge

假设在我的git repo上有两个分支:

  1. 大师
  2. 测试

在我的本地仓库中,我目前在Master上,我想合并Test的更新版本。

我要做的是:

git checkout Test
git pull
git checkout Master
git merge Test

(第二行可能没用。)

据我了解,此行:

git pull origin Test

(在第一个版本中,这是“ git pull origin / Test”,这要感谢@Tim来解决)

应将我的Master分支设置为类似状态(即,它将包括来自Test的更改)。 我知道 pull 等于 fetch + merge ,所以我现在有点困惑。

问题是:以上两种方法之间有什么区别?

1 个答案:

答案 0 :(得分:2)

Master分支运行以下命令:

git pull origin Test

避免仅为了拉就将分支更改为Test。等效于此:

git fetch origin Test && git merge origin/Test

但是更重要的是,只有通过快速前进才能完成合并,Git才会进行合并。如果不可能 ,则必须进行显式合并。

我可以提供以下工作流程来代替git pull origin Test

# from Master
git fetch origin
git merge origin/Test

以上两条代码使用来自远程服务器的最新更改来更新本地跟踪分支origin/Test。然后,它将Test直接合并到您的Master分支中。注意,我们不必从Master切换分支;无需执行git checkout,就可以进行整个合并。而且,即使该合并会导致冲突,Git也会始终采用这种方法进行合并。