Scenario
做项目的时候,一开始是从别人哪儿copy的工程,我在上面修改且不能拉取代码。在拿到工程权限后,需要将部分本地commit merge到最新的工程中,以下是解决步骤
git branch branch_for_merging
首先新建一个分支,存放我所有的commit
git fetch
抓取远端的工程,不然从
branch_for_merging
这个分支跳转回当前分支后,会报错
branch_for_merging is ahead of '当前分支‘ <commitHash> commits
git reset --hard <commitHash>
将当前分支回退到XXXX次提交
git pull
将工程拉到最新的版本
git cherry-pick <commitHash>
git cherry-pick
基本使用方法
git cherry-pick
的使用场景就是将一个分支中的部分的提交合并到其他分支
git checkout master
git cherry-pick <commitHash>
使用以上命令以后,这个提交将会处在master的最前面
合并多个提交
git cherry-pick <hashA> <hashB> // 合并两个提交
git cherry-pick <hashA>..<hashB> // 合并从A到B两个提交中到所有提交,但不包含A
git cherry-pick <hashA>^..<hashB> // 合并从A到B两个提交中到所有提交,包含A
pick以后产生了冲突
当执行了cherry-pick 命令如果有冲突,就会报冲突错误,一下是解决方法:
git cherry-pick --continue // 1. 解决完冲突以后,继续下一个 cherry-pick
git cherry-pick --abort // 2. 如果不想解决冲突,要放弃合并,用此命令回到操作以前
git cherry-pick --quit // 3. 不想解决冲突,放弃合并,且保持现有情况,不回到操作以前
将当前的提交合并到另一个工程
没有用到,不太会,但有方法
[学习资料来源于阮一峰大佬]