git-精心挑选的功能提交到新分支,还原的提交,变基不能按预期工作

Mat*_*att 5 git git-rebase

我最近不得不从'dev'分支中撤出一项功能,因为该功能被搁置了直到以后。

为此,我创建了一个分支,该分支的父级在“ dev”提交前一个提交(第一个功能提交是从另一个分支压缩的合并),一个提交之前,然后我将所有从dev提交的功能提交精选到了“ dev”分支中。新分支。最后,我对开发人员进行了一个大型的还原提交,以删除那些经过精心挑选的提交。

现在,我想将新分支基于dev进行更新。如果我运行“ git rebase dev”,则新分支的头将变为大还原,因此该功能将丢失。

使用“ git rebase --strategy = ours dev”时,功能分支中的所有提交都将跳过,并显示消息“已应用:0001 ...”。

如何将Feature分支重新建立到dev上,以便将对Feature的所有提交都应用到dev的头上?

也许有比我在这里描述的方法更好的方法来进行此过程?

jos*_*ing 4

您可以通过检查您的功能分支并执行以下操作来解决此问题:

git rebase --onto dev HEAD~<number of commits you care about> --force-rebase
Run Code Online (Sandbox Code Playgroud)

这指示 git 重播您指定的提交范围,并忽略该提交是否发生在 dev 上的提交之前的某个时间点。

请注意,这将为您留下如下所示的历史记录:

<did some work> -- <reverted all of that work> -- <re-did that work>
Run Code Online (Sandbox Code Playgroud)

这对你来说可能没那么有用。这里的其他一些答案详细介绍了如何通过重写来获得更清晰的历史记录,具体取决于您的团队对历史重写的容忍度。