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常用命令的总结,包括初始化配置、基本提交、分支操作、合并、压缩历史、推送和拉取远程仓库等操作的详细说明。
142 1
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
|
2月前
|
开发工具 git 开发者
关于git 解决分支冲突问题(具体操作,包含截图,教你一步一步解决冲突问题)
本文通过具体操作和截图,详细讲解了如何在Git中解决分支冲突问题,包括如何识别冲突、手动解决冲突代码、提交合并后的代码,以及推送到远程分支。
552 3
关于git 解决分支冲突问题(具体操作,包含截图,教你一步一步解决冲突问题)
|
3月前
|
缓存 开发工具 git
Git创建分支以及合并分支
在Git中,创建分支使用`git branch [branch_name]`,切换分支使用`git checkout [branch_name]`。修改文件后,通过`git add [file]`添加到暂存区,然后`git commit`提交到本地仓库。如果是新建分支的第一次推送,使用`git push origin [branch_name]`推送到远程仓库,之后可以简化为`git push`。合并分支时,使用`git merge [branch_name]`将指定分支的更改合并到当前分支。
96 2
Git创建分支以及合并分支
|
2月前
|
开发工具 git
git如何修改提交代码时的名字和邮箱?
git如何修改提交代码时的名字和邮箱?
217 4
|
2月前
|
开发工具 git
Git分支使用总结
Git分支使用总结
41 1
|
2月前
|
Java Linux 开发工具
IDEA中git提交前如何关闭code analysis以及开启格式化代码
【10月更文挑战第12天】本文介绍了在 IntelliJ IDEA 中关闭代码分析和开启代码格式化的步骤。关闭代码分析可通过取消默认启用检查或针对特定规则进行调整实现,同时可通过设置 VCS 静默模式在提交时跳过检查。开启代码格式化则需在 `Settings` 中配置 `Code Style` 规则,并通过创建 Git 钩子实现提交前自动格式化。
706 3
|
3月前
|
测试技术 开发工具 git
掌握 Git 分支策略:提升你的版本控制技能
在现代软件开发中,版本控制至关重要,Git 作为最流行的分布式版本控制系统,其分支管理策略对于高效协作和代码维护尤为重要。本文介绍了几种常用的 Git 分支策略,包括主线开发模型、功能分支模型、Gitflow 工作流和 Forking 工作流,并探讨了如何根据项目需求选择合适的分支模型。通过保持 `master` 分支稳定、及时合并清理分支、使用命名规范、利用 Pull Request 进行代码审查及自动化测试等最佳实践,可以显著提升团队协作效率和软件质量。掌握这些策略将帮助开发者更好地管理代码库,加快开发流程。
|
3月前
|
存储 Linux 开发工具
Git基础命令,分支,标签的使用【快速入门Git】
本文详细介绍了Git版本控制系统的基础概念和常用命令,包括工作区、暂存区和版本库的区别,文件状态的变化,以及如何进行文件的添加、提交、查看状态、重命名、删除、查看提交历史、远程仓库操作和分支管理,还涉及了Git标签的创建和删除,旨在帮助读者快速入门Git。
Git基础命令,分支,标签的使用【快速入门Git】
|
3月前
|
Shell 网络安全 开发工具
git与gitee结合使用,提交代码,文件到远程仓库
本文介绍了如何将Git与Gitee结合使用来提交代码文件到远程仓库。内容涵盖了Git的安装和环境变量配置、SSH公钥的生成和配置、在Gitee上创建仓库、设置Git的全局用户信息、初始化本地仓库、添加远程仓库地址、提交文件和推送到远程仓库的步骤。此外,还提供了如何克隆远程仓库到本地的命令。
git与gitee结合使用,提交代码,文件到远程仓库
|
2月前
|
JavaScript 前端开发 开发工具
一身反骨的我,用--no-verify绕开了git代码提交限制!
【10月更文挑战第7天】一身反骨的我,用--no-verify绕开了git代码提交限制!
160 0