我的主人有两个分支:
有没有办法将昨天的提交从 wss 复制到 v2.1?
你真的应该有一个工作流程,让你通过合并来完成这一切:
- x - x - x (v2) - x - x - x (v2.1) \ x - x - x (wss)
所以你所要做的就是git checkout v2.1和git merge wss。如果由于某种原因你真的不能这样做,并且你不能使用git rebase将你的 wss 分支移动到正确的位置,那么从某个地方获取单个提交并将其应用到其他地方的命令是git cherry- pick。只需检查要应用它的分支,然后运行git cherry-pick <SHA of commit to cherry-pick>.
git checkout v2.1
git merge wss
git cherry-pick <SHA of commit to cherry-pick>
变基可能会为您节省的一些方法:
如果您的历史记录如下所示:
- x - x - x (v2) - x - x - x (v2.1) \ x - x - x (v2-only) - x - x - x (wss)
您可以使用git rebase --onto v2 v2-only wss将 wss 直接移动到 v2 上:
git rebase --onto v2 v2-only wss
- x - x - x (v2) - x - x - x (v2.1) |\ | x - x - x (v2-only) \ x - x - x (wss)
然后就可以合并了!如果您真的,真的, 真的 无法达到可以合并的地步,您仍然可以使用 rebase 一次有效地做几个樱桃挑选:
# wss-starting-point is the SHA1/branch immediately before the first commit to rebase git branch wss-to-rebase wss git rebase --onto v2.1 wss-starting-point wss-to-rebase git checkout v2.1 git merge wss-to-rebase
注意:这样做需要一些额外工作的原因是它在您的存储库中创建了重复的提交。这真的不是一件好事 - 简单分支和合并的全部意义在于能够通过在一个地方提交并将它们合并到需要它们的任何地方来完成所有事情。重复提交意味着永远不会合并这两个分支的意图(如果您决定稍后再合并,则会发生冲突)。