鉴于:
git remote add upstream https://github.com/source-repo
来自我们的源库的分支中的一组K提交已成功合并到上游/主服务器中:
例如
commit C commit C-1 commit C-2 .. commit C-K-1
现在,我们想将上游/主服务器重新建立到我们的fork的本地克隆上。
尝试了以下命令:
git checkout our_feature_branch
git fetch -a upstream master
git rebase upstream/master
结果?合并冲突。
注意:我已经从github gui和本地编辑器验证了
upstream/master
和
local our_feature_branch
文件是相同的。
那么git rebase在做什么呢?是否不将最终的主版本/上游版本直接应用到本地?也就是说,它是否遍历了每个单独的提交(已被上游回购提交者btw ..压缩了)?
这似乎是唯一可行的过程-鉴于上游/主服务器和(fork的本地克隆)/ our_feature_branch的先前状态为:
完全相同的
不包含合并冲突中显示的文本(冲突中的文本来自K-1之前提交的..)
如果提示中确实没有任何差异,请不要重新设置基准。只是git checkout -B our_feature_branch upstream/master
,除非你真的真的必须要记住两种不同方式的项目得出了相同的内容,或git merge upstream/master
。
Rebase会将每个重新调整的提交的更改按顺序应用于给定的技巧-因此git不仅看到最终的,无冲突的内容,而且还看到了它的每个版本-因此可以确保对历史中的大块内容进行多次更改至少与新基地中已有的变更产生一些冲突。
我从没用过git imerge
,但是如果中间的历史差异太大,这可能会很有帮助。
这样做git diff upstream/master our_feature_branch --name-status
,而不是目测它在编辑器和GUI来检测的变化,git diff -b upstream/master our_feature_branch --name-status
看是否是因为任何类型的空白字符的变化。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句