刚工作时,代码管理使用的是SVN,后来换工作后,新公司用的git。代码提交时,经常会遇到一些需要代码合并、提错代码需要回退代码的场景,记录一下我常用的几个命令,如果有错误的地方,欢迎指正。
在不同的分支上开发完成后,代码合并可以使用merge和cherry-pick。git merge是将所有的提交记录都合并,git cherry-pick可单独合并某次提交记录,也可批量合并。例如:分支test和develop,要将分支test上的代码合并到develop分支上,切换到develop分支上:
git merge test //将分支test上的所有提交记录都合并到分支develop上
git cherry-pick test //将分支test上最新一次提交记录合并到分支develop上
//cherry-pick也支持一次合并多条提交记录
git cherry-pick commitA commitB //将分支test上的提交记录AB合并到develop上
git cherry-pick A..B //合并从A到B的提交记录,不包括A
git cherry-pick A^..B //合并从A到B的提交记录,包括A
合并出现错误时,也可对本次合并进行撤销:
git merge --abort //取消本次merge请求
git cherry-pick --abort //取消本次cherry-pick请求
代码冲突时,以cherry-pick为例:
若cherry-pick发生冲突时,操作会停下来,解决完冲突后,git add将修改的文件加入暂存区,然后git cherry-pick --continue继续cherry-pick操作。
git cherry-pick --quit发生冲突后,可以退出cherry-pick,但不会回到操作前。