git cherry-pick(拣选)
有时在开发时,会遇到想将某一开发分支的某个特定提交,应用到当前要发布的分支上,而不想合并整个分支;这时就可以使用cherry-pick 来实现;
拣选会提取某次提交的补丁,之后尝试将其重新应用到当前分支上。 这种方式在你只想引入特性分支中的某个提交时很有用。
用法
usage: git cherry-pick [<options>] <commit-ish>...
or: git cherry-pick <subcommand>
--quit end revert or cherry-pick sequence
--continue resume revert or cherry-pick sequence
--abort cancel revert or cherry-pick sequence
-n, --no-commit don't automatically commit
-e, --edit edit the commit message
-s, --signoff add Signed-off-by:
-m, --mainline <parent-number>
select mainline parent
--rerere-autoupdate update the index with reused conflict resolution if possible
--strategy <strategy> merge strategy
-X, --strategy-option <option> option for merge strategy
-S, --gpg-sign[=<key-id>] GPG sign commit
-x append commit name
--ff allow fast-forward
--allow-empty preserve initially empty commits
--allow-empty-message allow commits with empty messages
--keep-redundant-commits keep redundant, empty commits
具体应用:
假设有两个分支dev、test
目前在分支dev上做了个commit(ef2db28ab5b6690c7fc30d76945e8a68efed12b1),而此时test已经落后dev很多;
现在因为项目发布需要,需要将dev上的这个提交单独应用到test上,而同时不合并其他提交;
可进行如下操作实现:
git checkout test //首先切换当前分支为test
git cherry-pick ef2db28ab5b6690c7fc30d76945e8a68efed12b1 //将ef2db28ab5b6690c7fc30d76945e8a68efed12b1提交单独合并至test,并自动commit