用途:重新生成commitID,在原先其他分支或者本地分支的其他commit之上,然后git push到远端

1、在分支A重新提交我在分支B做的一次功能修改,并在分支A提交。

2、另一种情况在分支A(在未跟新代码的情况下修改了好几个功能,本地有好几个commit提交),我不能向远端用(git push origin 本地分支 远程分支),我往往会用先用git reset --HARD 到最新mergedID 然后git pull再用git cherry-pick(想要远端提交某个功能的commitID)生成新的commitID,然后再git push 到远端

用途一:

在本地分支B上

①git log

注:选择自己想要在分支A提交的功能,复制分支B的commitID

②git checkout <branchA>

注:切换分支到branchA

③git cherry-pick <commitId>

      注:commitID为之前在分支B复制的那个commitID,会在当前分支生成一个新的commit(没有冲突的情况下)

④git push origin <branchA> <originBranch>

完成

用途二:

在本地分支A上

①我本地修改已经完成,不知道我本地是不是最新的代码

然后我 git commit -m “提交信息”  //把我的修改生成了一个commitID

②git log 

发现我的代码并不是最新merge的基础上修改的

③git reset --hard <远端最新mergedID>

④git pull origin <originBranch>一下跟新远端代码

⑤git reflog  

   注:看我修改的那个commitID 复制一下

⑥git cherry-pick <commitID>

注:我复制过的那个

⑦git push origin <branchA> <originBranch>

完成

eg:

温馨提示:每次的使用git cherry-pick的时候要保证是本地与远端代码保持一致,才可以正确提交,远端才不会有其他提交的信息

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐