checkout+merge和pull的区别
Difference between checkout+merge and pull
假设在我的 git 回购上我们有两个分支:
- 硕士
- 测试
在我的本地仓库中,我目前在 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 将始终与这种方法合并,即使合并会导致冲突。
假设在我的 git 回购上我们有两个分支:
- 硕士
- 测试
在我的本地仓库中,我目前在 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 将始终与这种方法合并,即使合并会导致冲突。