git cherry-pick

问题情境

小明成功的在原来的代码基础上添加了新的功能demo,现在需要将新添代码部分push进远程仓库,可是commit之后,小明发现当前并没有本地分支和远程分支链接。此时没有办法进行push,那么该如何解决呢?

解决方案

#搜索可用的远程分支,将要提交到的远程分支
git branch -a | grep [key word]
#创建并且换到新分支,新分支连接到远程分支
git checkout [remote-branch] --track
#将之前的提交合并到,当前分支
git cherry-pick [commit]
#此时之前的提交已经在新建的本地分支中了,直接push即可
git push [remote] HEAD:refs/for/[branch]

适用场景

git cherry-pick 可以选择某个分支中的一个或几个commit(s)来进行操作。例如:假设我们有个稳定版本的分支,叫v2.0,另外还有个开发中的版本分支v3.0,我们不能直接把两个分支合并,这样会导致稳定版版本混乱,但又想增加一个v3.0的功能到v2.0中,这里我们就可以使用cherry-pick了。

冲突解决

  • 如果顺利就会正常提交
Finished one cherry-pick.
# On branch old_cc
# Your branch is ahead of 'origin/old_cc' by 3 commits.
  • 如果在cherry-pick的过程中出现了冲突
Automatic cherry-pick failed.  After resolving the conflicts,
mark the corrected paths with 'git add ' or 'git rm '
and commit the result with: 

        git commit -c 15a2b6c61927e5aed6718de89ad9dafba939a90b
  • 就跟普通的冲突一样,手工解决
#看那些文件出现冲突
git status
#打开编辑器,手动解决
gedit [file]
#重新加入暂存区,然后提交
git add [file]
git commit -c [新的commit号码]

你可能感兴趣的:(git cherry-pick)