携手创作,一同成长!这是我参与「日新计划 8 月更文应战」的第12天,点击检查活动详情。

前语 经过本文能够学习到,好几种分支之间兼并代码的方式,让你或许对日后的代码兼并不再惧怕。

1、功用分支或许bug分支兼并到主分支

有时候咱们开发一个功用或许会基于主分支创立新的分支,然后等功用开发完毕后,要兼并到主分支。

比如:功用分支位feat/village, 主分支是dev。咱们要想将功用分支代码兼并到主分支,那么咱们首先就要切换到主分支。

// 先切换的dev主分支
git checkout dev
// 将feat/village分支的变更拉取到dev分支上来
git merge feat/village
// 兼并完结,即可推送到长途服务器
git push -u origin dev

当然兼并代码有时候难免就会有抵触,这个时候咱们就需求先处理抵触然,处理完抵触后再进行推送。

一般的抵触或许是这样的:你先拉取代码到你的本地分支,然后其他搭档也有或许在改别的功用或许bug,但是他比你早兼并代码到长途分支,这样在你完结功用或许修正完代码后,兼并到长途分支的时候,许多时候有一些兼并会进行主动兼并,但也有许多时候有抵触需求手动处理。
同时别人有或许也改过跟你相同的文件,相同的函数,这样就不可避免的就要手动处理抵触。\

简略的抵触或许就是: 挑选你本地的代码、或许挑选长途分支的代码、再或许要同时挑选本地代码并且要加上长途分支的代码。有时候或许兼并之后代码存在问题,有或许要与一同修正的搭档进行商量,重写抵触的那几行代码,由于咱们或许同时修正实现了两个功用,要考虑如何兼容两个功用的问题。

2、将其他分支的某个提交兼并到当时分支

// (正常状况直接兼并成功,或许存在重复图需求手动处理)
git cherry-pick  commitid
// 正常状况直接push即可,手动处理抵触需求commit 再进行push
git push
// 扩展阅览:还能够一同提交commitid-A到commitid-B 之间所有的内容修正
// http://www.ruanyifeng.com/blog/2020/04/git-cherry-pick.html

commitid 能够经过git log 来确定

git 分支合并代码的四种方式

3、将其他分支的多个提交一同兼并到当时分支

这儿其实有两种状况,一种是几个提交是别离的,不接连,没什么关系;另外一种则是几个题提交是接连的。

  • 不接连的兼并 简略的方式就是经过上面的方式一个一个的兼并,但是有一点费事,其实只要略微变通就能够提交多个
git cherry-pick commitidA commitidB commitidC
git push
  • 接连的兼并
// commitidA的提交时刻必需要早于commitidB
// 这种提交不会包括commitid-A本身
git cherry-pick commitidA..commitidB
git push
//假如想包括commtidA也是能够的
git cherry-pick commitidA..commitid B
git push

4、两个git库房进行代码和日志记载的兼并

// git@github.com:aehyok/blog1.git
// git@github.com:aehyok/blog2.git
// 以blog1库房的main分支为基础,将blog2库房的main分之兼并到blog1库房的main.
//1.在blog1库房下添加长途库房blog2
git remote add blog2 git@github.com:aehyok/blog2.git
//2.在blog1库房下拉取数据到本库房
git fetch blog2
//3.依据拉取将长途库房的blog2的main分支,在本地创立blog2main
git checkout -b blog2main blog2/main
//4.切换回blog1的main分支
git checkout main
//5.将本地分支blog2main兼并到main分支
// 这两个库房原本就是没有相关的,所以要加上参数
git merge blog2main --allow-unrelated-histories
//最后假如没有抵触就完毕了
// 假如有抵触就处理一下
git push

5、总结

四种我日常工作中使用过的兼并场景,前面三种用过的比较多一点,第四种就用过一次,这些场景你有遇到过嘛?或许你还有其他场景的兼并吗?