文章目录背景整体流程实战项目第一步第二步第三步最终背景在一个主分支中需要在分支维护另一份代码整体流程首先要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