将一个提交从主分支移动到独立分支

3

我错误地从错误的分支进行了分支,我想将一个提交移动到主分支而不是功能分支。尝试使用“从feat2重置主分支”,但是出现“当前分支......已经是最新的”。

基本上,我想从这里开始:

feat2                   F
                       /
feat1         C - D - E
             /
master A - B 

对于这个问题

feat1         C - D - E
             /
master A - B 
             \
feat2         F

当然,F并不依赖于C-D-E中的任何一个

编辑:强制变基显示,不仅在feat2上考虑了F,而且还将所有来自master的提交(C-D-E-F)进行了变基。我需要一种告诉变基在feat1处“切断”的方法。


我认为rebase --onto和cherry-pick基本上是你在这里的选择,它们都是潜在的好选择。 - Tim Biegeleisen
1个回答

1
尝试使用git rebase --onto:
git checkout feat2
git rebase --onto E B

这段话的意思是将父提交为E的提交F变基到提交B之上。这样做可以让feat2看起来符合预期,因为提交F直接位于B之上。
另一种简单的处理方法是从master分支中创建一个名为feat2new的新功能分支,然后挑选提交F。完成后,您可以删除旧的feat2分支并将feat2new重命名为feat2
git checkout master
git checkout -b feat2new
git cherry-pick <SHA-1 for commit F>

现在删除 feat2,并进行重命名:
git branch -d feat2
git branch -m feat2new feat2

由于我只有一个提交,我使用了 cherry-pick,但对于更多的提交,--onto 绝对是正确的方法。正确的命令似乎应该是:git rebase --onto master feat1 feat2。 - a1an

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接