Git-创建本地分支后拉原点主机

时间:2019-02-24 06:39:29

标签: git

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

  1. 原始主机中有一个提交(aaaaaa),例如初始提交。
  2. 我克隆了原始母版
  3. 我创建一个新的本地分支(new_feature),签出该分支,然后对new_feature进行提交(bbbbbb)。
  4. 有人对原始主机进行了新提交(cccccc)。

在步骤4之后执行git pull origin master时会发生什么情况?请解释。

2 个答案:

答案 0 :(得分: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

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

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

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

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

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

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

提交D是一次合并提交,实际上同时拥有BC作为父母。

答案 1 :(得分:0)

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

here

对此过程进行了很好的解释