少用少见的 - 只合并指定的内容 ¶
作者:KK
发表日期:2020.03.06
问题背景 ¶
有时候你只是想将一个 test 分支的部分代码合并到 master 分支,而不是直接git merge test
导致全部 test 代码都合并了过来,想必里面有一些你不希望上线的代码吧。
最土的方法,不熟悉的人当然会使用单独复制文件的方式,实际上有专门的操作手法。
解决方案 ¶
你要合并的指定内容,必须是一次独立的提交记录,会产生一个日志号,在原来的分支(比如 test 分支?)通过查看日志得到这个日志号,比如
git log
从上到下看看,第1个或者最近几个版本号里就有你需要的吧,那就复制版本号,比如版本号是 6b89c00db5f8d24aed5a2c89470f1cc1f6ce2cc8。切换到目标分支(比如 master),执行
git cherry-pick 6b89c00db5f8d24aed5a2c89470f1cc1f6ce2cc8
,好了就这样成功了!
这个 cherry-pick 命令的意思是:摘取一个指定的日志对应的变更内容到本分支,那也就是指定合并某个提交内容的作用了。
其实专业地说,它是把某个提交重做一次,这个重做是包括了文件内容变更、文件提交,所以 cherry-pick 过来后,不需要手动 commit 了,文件内容变了,而 log 也有了这个提交,然后就等你确认并 push 了。
多个日志合并 ¶
不是用 cherry-pick 命令,这命令只能合并一个日志,合并多个要执行多次,想一次性合并多个有别的命令,用过一次忘了,找回了补上内容哈。