引自免费微信小程序:皆我百晓生
要解决这个问题,你需要使用git rebase
命令结合--onto
选项,这样可以重新安排特定范围内的提交,使其看起来像是在另一个分支上进行的。首先,你需要找到要在A分支上应用的最后一次B分支提交的哈希值。这可以通过查看提交历史来完成,通常它会是最新的提交。
这里是一个详细的步骤指南:
-
首先,确保你在A分支上:
git checkout a
-
确定要从B分支复制的最后一个提交的哈希值。这个哈希值是你要在A分支上应用的最后一个提交。你可以通过
git log
命令查看,找到一个你知道它是B分支开始的地方的提交。git log --oneline --graph --all
-
使用
git rebase --onto
命令将选定的提交之后的提交移动到A分支上:git rebase --onto a
b 其中
是你在第二步中找到的哈希值,b
是原始的B分支名称。 -
在执行
rebase
操作时,可能会遇到合并冲突。如果有冲突,你需要手动解决它们,然后运行:git add . git rebase --continue
重复此过程直到所有冲突都解决。
-
解决完所有冲突并继续
rebase
后,确认结果是否符合预期:git log --oneline --graph --all
-
如果一切正常,你可以删除B分支的暂存快照(只删除本地版本):
git reset --hard HEAD~1
-
最后,再次检查工作区的状态,确认只有你想提交的更改在待提交列表中,然后提交:
git status git commit -m "Cherry-picked specific commits from branch B" git push origin a
按照这些步骤操作,你应该能够在A分支上得到想要的提交,而不会包含B分支之前的其他提交。记住,这是一个复杂的操作,所以在操作之前一定要备份你的工作区和暂存区,以防万一。