应用场景 我当前有个master分支,提交记录如下
1.init
2.commit1
3.demo_ok
4.commit3
5.commit5
现在 我要checkout 到demo_ok上开发
然后我发现了1个bug,并修复了
现在我想把修复的代码合并到master上
我进行了如下操作
我先把代码commit了
git commit -m "在demo_ok版本修复了个bug"
然后 创建了一个分支
git branch demoBugFix
然后切到 demoBugFix分支上看一眼log
git checkout demoBugFix
git log
记录下最新提交的 commit id
然后checkout到master最新的代码
git checkout master
然后git cherry-pick 之前记录的commit id
发现有些代码有冲突
error: could not apply a47961f...
git status
可以看到哪些文件冲突了,根据这些文件去android studio中找,并手动解决冲突.
右键有冲突文件
git->resolve conflict
然后就看到3个版本,中间的代码版本是你最终的修改版本.
等冲突解决完之后
git status
发现 文件依然是modified
此时可以敲命令 git cherry-pick --continue
git add .
git commit -m "解决完冲突提交冲突文件"
git log 可以发现2笔提交 记录,如下
"在demo_ok版本修复了个bug"
"解决完冲突提交冲突文件"
我要把这2个提交合并成一个
git rebase -i HEAD~2
如果出现 invalid upstream 'HEAD~2'
可以使用 git rebase -i --root
编辑前2次的提交信息
然后把不想要的那行开头的pick 改成fixup
点退出 选yes 然后再回车 然后就可以保存成功了
最后看git log 就可以看到2个提交变一个
OK
如果出现the following untracked working 说明是有些文件没有被git追踪,估计是被你的.gitignore给忽略了
我建议直接先删了这些文件
命令如下:
git clean -d -fx