场景描述:
多个分支,一个dev,一个featureA分支,一个featureB分支,featureA分支日常修改,并且涉及到一个特殊目录的修改(目录X),这个修改不需要合并到dev,如果dev要合并featureA,但是不合并目录X下的修改,如何做?
实现方法
条件:目录X下的修改,要和其他修改分开,不能混合在一个commit中。
首先切换到featureA分支
git checkout featureA
git log
找出要合并的commit ID,可能有多个:xxxxxxxxxxxxx
然后切换到Dev分支上
git checkout Dev
git cherry-pick xxxxxxxxxxxxx
然后就将featureA分支的某个commit合并到了dev分支,其他的commit则没有合并上,有个重要的限制每次只能合并一个commit,如果有多个稍麻烦,注意解决冲突。
cherry-pick:参数
–quit 退出当前的chery-pick序列
–continue 继续当前的chery-pick序列
–abort 取消当前的chery-pick序列,恢复当前分支
-n, --no-commit 不自动提交
-e, --edit 编辑提交信息
cherry-pick会自动提交(如果没有冲突),-n可以取消自动提交,之后需要自己add,commit
如果存在冲突,无法提交冲突,需要解决冲突后自己手动commit,或者git cherry-pick --continue
如果存在冲突,git cherry-pick --quit 后dev分支下未冲突的内容将会被修改,冲突内容恢复
如果存在冲突,git cherry-pick --abort 后 合并的内容将取消