应用场景    我当前有个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