checkout+merge和pull的区别

Difference between checkout+merge and pull

假设在我的 git 回购上我们有两个分支:

  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 分支达到类似的状态(即,它将包括来自测试的更改)。 我知道 pull 等于 fetch+merge,所以我现在有点困惑。

问题是:以上两种方式有什么区别?

运行 来自 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 将始终与这种方法合并,即使合并会导致冲突。