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

简介: 比如:功能分支位feat/village, 主分支是dev。我们要想将功能分支代码合并到主分支,那么我们首先就要切换到主分支。

image.png


前言 通过本文可以学习到,好几种分支之间合并代码的方式,让你可能对日后的代码合并不再惧怕。


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 来确定


image.png


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、总结


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

目录
相关文章
|
2月前
|
开发工具 git
使用Git根据日期进行代码版本切换的方法
通过以上步骤,可以有效地根据日期进行Git代码版本的切换。这种方法在需要回溯历史版本进行bug修复或功能复查时特别有用。Git的灵活性和强大功能使其成为现代软件开发不可或缺的工具之一。
275 103
|
6月前
|
存储 安全 开发工具
深度解决 Git “fatal: refusing to merge unrelated histories” 错误解析什么是历史分支优雅草卓伊凡
深度解决 Git “fatal: refusing to merge unrelated histories” 错误解析什么是历史分支优雅草卓伊凡
457 4
深度解决 Git “fatal: refusing to merge unrelated histories” 错误解析什么是历史分支优雅草卓伊凡
|
3月前
|
开发工具 git
Git版本控制工具合并分支merge命令操作流程
通过以上步聚焦于技术性和操作层面指南(guidance), 可以有效管理项目版本控制(version control), 并促进团队协作(collaboration).
439 15
|
5月前
|
数据可视化 Java 测试技术
Git Flow 现代实操指南含从代码提交到 CI/CD 全流程的实用技巧与长尾关键词解析 Git Flow
本指南结合现代技术趋势,详解Git Flow工作流,涵盖GitHub Actions自动化、Conventional Commits规范、Gitmoji可视化等内容,助你实现代码到CI/CD的全流程管理,提升团队开发效率与代码质量。
363 2
|
11月前
|
开发工具 git
图解Git——分支的新建与合并《Pro Git》
在Git开发中,新建与合并分支是常见的操作。以实际开发为例:为实现新需求创建分支`iss53`进行开发;遇紧急Bug时,切换至线上分支创建`hotfix`修复并合并回线上分支,再切换回`iss53`继续工作。完成`iss53`后,切换到`master`合并。若出现冲突,使用`git status`查看,手动编辑解决冲突后标记为已解决并提交。图形化工具如`git mergetool`也可辅助解决冲突。
224 9
|
11月前
|
开发工具 git 开发者
图解Git——分支简介《Pro Git》
Git 分支是其核心特性之一,允许开发者从主开发线分离工作,避免干扰主线。传统版本控制系统创建分支效率低,而Git的分支创建和切换非常轻量高效。
567 9
|
10月前
|
开发工具 git 开发者
vscode+git解决远程分支合并冲突
通过这些详细步骤,您可以掌握如何使用VSCode和Git高效地解决远程分支合并冲突,提高开发效率和代码质量。希望这些内容对您的学习和工作有所帮助。
2194 86
|
7月前
|
JavaScript 前端开发 持续交付
实际工作中 Git Commit 代码提交规范是什么样的?
实际工作中 Git Commit 代码提交规范是什么样的?
450 7
|
7月前
|
网络安全 开发工具 git
Git仓库创建与代码上传指南
本教程介绍了将本地项目推送到远程Git仓库的完整流程,包括初始化本地仓库、添加和提交文件、创建远程仓库、关联远程地址及推送代码。同时,还提供了`.gitignore`配置、分支管理等可选步骤,并针对常见问题(如认证失败、分支不匹配、大文件处理及推送冲突)给出了解决方案。适合初学者快速上手Git版本控制。
|
6月前
|
开发工具 git 索引
如何使用Git的暂存区来管理代码更改?
如何使用Git的暂存区来管理代码更改?
978 0