git 分支 实战
文章目录
- 背景
- 整体流程
- 实战项目
- 第一步
- 第二步
- 第三步
- 最终
背景
在一个主分支中需要在分支维护另一份代码
整体流程
首先要git init
初始下git环境,然后创建分支,然后在分支上修改提交
实战项目
首先,我这里是有个已经初始化,有git本地仓库的代码
第一步
我修改了代码
此时
git status可以看到修改的文件
如果你此时建分支
git checkout-b myBranch执行完后,你已经身处新分支了,但是此刻你会发现,那些你修改的文件也跟过去了
基本流程是
源代码→→→→→→→→→→→→修改
↓~~~~~~~~~~~~~~~~~~~~~~~~~~~↓
myBranch分支→修改→→→→→合并修改→→→→→→→最终的拥有main主线和分支的修改
第二步
我需要回到main 主线去,将修改的先commit到主线去
gitswitchmain git commit-m"提交的备注信息"此时你再切到myBranch分支,就没有修改记录了
gitswitchmyBranch git status此时你会发现,当你在main 和 myBranch 分支来回切换的时候,你文件,代码是不一样的,比如main 主线有 123.txt 文件,由于你commit到主线了,所以你切换到 myBranch分支后,你会发现没有这个文件,当你切回 main 分支后,你会发现这个文件以及其他的修改又回来了
这应该就是git的魅力吧
第三步
接下来就是在myBranch分支修改了
修改完成之后提交到分支上去
git add.git commit-m"修改备注"第四步
合入主线修改的内容
使用
git log main-n5或 git log main 或 gitswitchmain git log切回主线
获取主线那笔提交的comnit id(假设是123456789)
然后
git cherry-pick123456789此时,如果有冲突,就会报错,如果没有冲突就直接合上去了
有冲突的话,你就
git status看哪些文件有冲突,然后打开对应文件,你会发现有对应这种格式的内容
<<<<<<<HEAD (这里的内容:是你当前分支 myBranch 原有的代码)=======(这里的内容:是你正要摘取过来的、来自 main 分支那笔提交的代码)>>>>>>>9339e25...(提交的注释)这个时候,你就对比,看看你要保留什么,把另一个不需要的删掉就好了
这里有两个命令可以用到
git checkout--theirs 文件路径 git checkout--ours 文件路径 如//直接替换合入的文件(这里就是冲突的文件以main为主)git checkout--theirs kernel-6.1/logo.bmp//以当前分支的文件内容为主git checkout--ours external/wifi_driver/Module.symvers最终
等全部合好后,只需要
git add.git cherry-pick--continue添加进入,然后继续cherry-pick 就可以了
最终结果,主线中包含主线修改,支线包含了支线的修改和主线的修改
End
