【问题标题】:Git - pull origin master after creating local branchGit - 创建本地分支后拉原始主
【发布时间】:2019-07-17 20:48:06
【问题描述】:

我只是在学习 git,无法理解当我们在创建新的本地分支并且在远程 master 中有新的提交之后执行 git pull origin master 时发生了什么。考虑以下示例:

  1. 原始主机中有一个提交 (aaaaaa),例如初始提交。
  2. 我克隆了origin master
  3. 我创建了新的本地分支 (new_feature),签出它,然后提交 (bbbbbb) 到 new_feature。
  4. 有人向原始主机提交了新的提交 (cccccc)。

当我在第 4 步之后执行 git pull origin master 时会发生什么?请解释一下。

【问题讨论】:

  • 阅读重复链接here中接受的答案。
  • @TimBiegeleisen 您能否删除您的重复项-该问题考虑的情况比我的要复杂得多,而且我是初学者,所以我要回答这个具体示例。
  • 它实际上涵盖了与您相同的情况。
  • @TimBiegeleisen 如果你不能帮助我,那就让别人去做吧。

标签: git


【解决方案1】:

This Stack Overflow question 主要解释了当您从另一个远程分支执行 git pull 时会发生什么。

# from new_feature
git pull origin master

上面等价于这个:

# from new_feature
git fetch origin master && git merge master

但是,这里的关键是,在您的情况下,Git 实际上 不会 执行上述操作,因为合并 不是 快进合并。这是因为您的分支目前看起来像这样:

master:      ... A -- C
                  \
new_feature:       B

也就是说,在B 之上合并C 提交不仅仅是一个简单的回放,因为可能存在合并冲突。

在这种情况下你应该做的,并且可以说你在这种情况下应该做的,就是将 master 合并到你的功能分支中:

# from new_feature
git fetch origin master
git merge origin/master

请注意,可能存在合并冲突,您必须先修复这些冲突,然后提交以完成合并。

提交后,您的分支应如下所示:

master:      ... A -- C
                  \    \
new_feature:       B -- D

提交D 是一个合并提交,实际上有BC 作为父级。

【讨论】:

    【解决方案2】:

    当您在第 4 步之后运行 git pull origin master 时,git 实质上会尝试 fetch,然后合并您的功能分支中不存在的更改。

    这个过程很好解释here

    【讨论】:

      猜你喜欢
      • 2017-12-15
      • 1970-01-01
      • 2015-02-11
      • 1970-01-01
      • 1970-01-01
      • 2020-12-03
      • 1970-01-01
      • 2019-09-18
      • 2015-03-30
      相关资源
      最近更新 更多