当前位置:   article > 正文

Git 之合并外来代码_git本地合并外部导入的代码

git本地合并外部导入的代码

这两天合并一个段外来代码,这段代码并不在git库中。
于是我如下做:
(1)保存当前状态,建立一个commit
(2)新建一个分支test,把外来代码拷到这里,并commit
(3)合并test,再删除test。
看起来没有问题,但实际错大了!
由一篇 git reset revert rebase 区别 中提过,git为每个文件保存了树状的修改信息链,这个信息链让git的合并操作更加智能,我猜测Git应该是以段为单位来记录的,但怎么个划分法,我没研究过算法,并不清楚。

具体来说,
在分支1的某代码文件中有2个函数A/B;
然后新建分支2,修改函数A->A2,再新建函数C;
回到分支1,新建分支3,修改函数B->B2,并新建函数D;
然后合并分支2和分支3,我们将在这个代码文件中得到函数A2/B2/C/D。
分支大致如下:

分支1----分支2  \
    \---分支3----\ 分支3'
  • 1
  • 2

这个过程非常智能对不?但对于我之前的操作流程,就大错特错了。因为我在第一步时保存的commit告诉Git当前的代码是最新信息,当建了一个子分支,并导入外来代码后,这个代码比之前的commit新,也就是说,Git会默认把commit中的代码当作旧代码,而被更加新的外来代码在合并时去掉

我仔细找了Git的合并参数,然而非常无奈地发现,没有相关参数避免这一智能合并,也许是我没有找到吧。

所以,最后,只能记下这一经历,经验如下:
(1)要在一个Git代码库中工作,尽量不要有外来代码
(2)如果必须合并,合并外来代码要非常小心,最好从可以确定的外来代码和库中代码没有冲突的commit-id节点开始,分出两个支,然后再合并

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/399569
推荐阅读
相关标签
  

闽ICP备14008679号