如何从错误的分支而不是主分支创建分支中恢复

爆炸冰箱

我发现自己经常遇到以下 Git 场景:

  1. 从主分支,我创建并签出分支 A
  2. 在分支 A 上,我做一些工作,创建一些提交等,然后推送我的更改
  3. 我需要做一些不相关的工作,所以我创建并结帐分支 B
  4. 我在分支 B 上创建了更多提交并推送
  5. 我去创建一个 PR,然后……哎呀。我从分支 A 创建了分支 B,所以突然间我的 PR 中有来自分支 A 的所有这些不相关的提交。我需要从主分支创建分支 B。

只是想知道这里最好的工作流程是什么。当然,我可以删除分支 B,再次创建它并复制我的提交,但这似乎很乏味。rebase 不是一个选项,因为我已经推送到远程仓库。也许我可以恢复从分支 A 到 B 的所有提交?也许我应该在创建分支之前创建一个别名来检查 main ?

琼尼斯

最简单的解决方案:重新定位到

git rebase具有 on 模式可以完全按照您的意愿进行操作:

git rebase --onto main A B

将从 A 中取出 B 并将其重新定位到 main 上。

如果您在运行此程序时已签出 B,则无需在该 rebase 命令行上指定它。

Cherry Pick 选项您也可以通过樱桃挑选操作来完成。

在正确的位置创建一个新分支,从 B 中挑选所有提交到它上面,然后将 B 重置为它。

git checkout main  # or where the branch should start from
git checkout -b B-new  # pick a new name, you'll need access to both B and B-new
git cherry-pick A..B  # cherry pick all commits on B not on A

现在B-new是您首先要创建的分支。您可以只使用新名称,或者如果您想保留名称B,请将其重置为B-new

git checkout B
git reset --hard B-new

并清理,因为您现在不再需要B-new

git branch -d B-new

但所有这一切都在做 rebase 所做的一切......

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章