我只是在学习git,在创建新的本地分支并且远程master中有新的提交之后执行git pull origin master
时不知道发生了什么。考虑以下示例:
在步骤4之后执行git pull origin master
时会发生什么情况?请解释。
答案 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
是一次合并提交,实际上同时拥有B
和C
作为父母。
答案 1 :(得分:0)
在第4步之后运行git pull origin master
时,git实际上会尝试fetch
,然后合并功能分支中不存在的更改。