git - cherry-picked feature commits to new branch, reverted commits, rebase 不按预期工作

标签 git git-rebase

我最近不得不从我们的“开发”分支中提取一项功能,因为它被搁置到以后。

为此,我创建了一个分支,其父级在第一个功能提交之前的“开发”提交上(第一个功能提交是来自另一个分支的压缩 merge 。)然后我从中挑选了所有功能提交开发到新的分支。最后,我在 dev 上做了一个大的恢复提交,以删除那些精心挑选的提交。

现在我想在 dev 上重新建立新分支以使其保持最新。如果我运行“git rebase dev”,新分支的负责人将成为大恢复,因此该功能将丢失。

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

如何将功能分支 rebase 到 dev,以便将功能上的所有提交应用到 dev 的负责人?

也许有比我在这里描述的更好的方法来完成这个过程?

最佳答案

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

git rebase --onto dev HEAD~<number of commits you care about> --force-rebase

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

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

<did some work> -- <reverted all of that work> -- <re-did that work>

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

关于git - cherry-picked feature commits to new branch, reverted commits, rebase 不按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22461088/

相关文章:

git - 从最后 N 次提交中获取差异的速记?

android - Glide Process 'command ' git'' 以非零退出值 128 完成

linux - 混帐 : reverts changes other than one specific files

git - 为什么我会与 git rebase -p -i 发生冲突?

ios - Xcode 9.1 源代码控制 : failed to load revisions

git rebase --继续,但在冲突解决期间修改提交消息以记录更改?

git - 如何完成这个 git rebase 操作?

git - 将 2 提交压缩为 1

git:为单个命令选择编辑器

git - kubernetes仪表板无法启动