git cherry-pick使用
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
遇到的问题
在业务中,遇到一个需求写完后,时隔一个月才要进行合并,当去拉master分支的代码时,项目中有许多其他需求的变更,导致拉下代码时,本地更改的不少代码被master分支中的代码覆盖。
解决方案
git cherry-pick
简介
根据我自己使用过后所理解的
cherry-pick
,即为对历史某个提交或对多个提交记录的重新合并,他会对当前最新的代码和所需要cherry-pick提交记录中的代码进行对比,最后通过自己进行解决冲突选择我们所需要的代码。
基本使用
- 在自己的分支拉取master分支的代码
git pull origin master
此时master分支的代码会将本地代码覆盖
- 找到我们分支中需要重新合并的提交
commitHash
git log
查看提交记录和commitHash
git cherry-pick <commitHash>
上面命令就会将指定的提交commitHash,应用于当前分支。这会在当前分支产生一个新的提交,当然它们的哈希值会不一样。
git cherry-pick
也可以作用于多个提交
git cherry-pick <commitHash1> <commitHash2> <commitHash3> ...
- 当
git cherry-pick
遇到冲突时,会自动停下来,当我们解决完冲突后
git add .
将修改的文件重新加入暂存区,然后使用continue
让 cherry pick 过程继续执行。
git cherry-pick --continue
- 发生代码冲突后,放弃合并,回到操作前的样子
git cherry-pick --abort
- 发生代码冲突后或者解决冲突后,退出 Cherry pick,但是不回到操作前的样子。
git cherry-pick --quit