Git操作:在多个分支之间,使用git am打patch和同步分支
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Git操作:在多个分支之间,使用git am打patch和同步分支,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2384字,纯文字阅读大概需要4分钟。
内容图文
![Git操作:在多个分支之间,使用git am打patch和同步分支](/upload/InfoBanner/zyjiaocheng/996/3601b2932ea3438eba7a3b65bf3ce8c6.jpg)
Git 是一个开源的分布式版本控制系统,可以方便、高效地处理从小到大的不同的项目版本管理。
分支模型是Git最显著的特点,开发者可以随时创建、合并、删除分支。对于不同的项目需求、不同的软件版本、不同的开发阶段(Develop、Feature、Hotfix、Release),可以创建多个分支进行开发,之后可以进行分支合并,这种方式使开发变得快速、简单、安全。
Git的分支模型
比如有两个分支:A和B,A分支中的两个patch,我们需要同步到B分支。这时候有两种打patch的方案:
- 在A分支用 git diff 生成.diff文件,然后在B分支用 git apply 打patch。
- 在A分支用 git format-patch 生成.patch 文件,然后在B分支用 git am 打patch。
需要注意的是:
- .diff 文件只是记录文件改变的内容,没有commit的提交信息,因此用 git apply 打上patch之后,还需要再重新commit。
- .patch文件不仅记录文件改变的内容,也有commit的提交信息(每个commit对应一个patch文件),因此可以把提交信息也都打进去。
这里介绍一下使用 git am 打patch的步骤。
1、查看patch的提交信息
使用 git log 命令查看patch的提交信息,如下图所示。
2、生成所选的patch
在A分支使用 git format-patch 命令生成相关patch,根据需要,有不同的patch生成方法。
生成最近1次commit的patch:
git format-patch HEAD^
生成最近2次commit的patch:
git format-patch HEAD^^
生成单个提交的patch:
git format-patch [commit-id] -1
生成某次提交(含)之前的n次提交:
git format-patch [commit-id] -n
生成某次提交(不含)之后的所有提交:
git format-patch [commit-id]
使用 git format-patch 命令生成相关patch,每个patch都是一个单独的文件,并采用编号+提交信息的方式命名,如:
0001-Feature-hello-world.patch。
3、打patch
在B分支用 git am *.patch 命令打上所有patch。
若没有任何问题,git am 会直接将 patch 的所有信息都打上去,使用 git log 可以查看是否成功。
但意外才是常态!
下面几个命令在遇到问题时会经常使用。
检查patch修改的文件:
git apply --stat xxxx.patch
检查patch能否打成功:
git apply --check xxxx.patch
若这条命令没有任何输出,则代表可以直接打成功;若有冲突,则会输出error信息。
有冲突没关系,使用下面命令强行合入 patch 中不冲突的代码,同时保留冲突的部分:
git apply --reject xxxx.patch
使用上面的命令,会把有冲突的部分保存为 .rej文件,然后手动编辑发生冲突的code文件,解决冲突后,删除 .rej文件,通过 git add 命令将相关文件添加到暂存区中。
告诉git冲突解决,继续打patch:
git am --resolved
若需要跳过有冲突的patch,则使用:
git am --skip
若中途不想打patch了,恢复原状,则使用:
git am --abort
上面就是整个流程,最后通过 git log 命令来查看是否成功,确认没问题后使用 git push 命令将修改推送到远程仓库。
原文:https://www.toutiao.com/i6721962314783785485/
内容总结
以上是互联网集市为您收集整理的Git操作:在多个分支之间,使用git am打patch和同步分支全部内容,希望文章能够帮你解决Git操作:在多个分支之间,使用git am打patch和同步分支所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。