将一些提交移动到功能分支但将其他提交留在主分支

Moving some commits to a feature branch but leaving others in the master branch

我不确定我是否可以为此做些什么,保持原样并不是一个很大的困难。

我确实尝试按照其他 SO 主题等的步骤来解决问题,但最终丢失了我所有的帮助修订提交和文件。

事情有点乱,我会尽力解释。历史在某一点之前是可以的:

Removing unused resource ID values from resource.h

你能看到日志屏幕截图底部的那个吗?

从那时起,大部分提交都是帮助文件修订:

但它变得很复杂,因为有大量的帮助修订提交,我有一些代码更改提交。例如:

Added SetLoggingPath to CMSATools.

Revised CChristianLifeMinistryUtils::FillStudentsListBox method. Now it reads the students from the publishers database.

情节变厚了,对于其中的一小部分,例如:

Add Help menu to CPublishersDatabaseDlg.

在这些情况下,提交是代码更改和帮助修订更改的组合:

Added OnHelpHelp menu handler.

Started writing Help/HelpPublisherDatabase.html help topic.

主要问题:

从主分支中的此提交开始:从 resource.h 中删除未使用的资源 ID 值我可以创建一个名为:help 的新功能分支-revisions 然后, 将提交从 master 移动到功能分支?

如果可能的话,我假设我们只需要移动纯粹是帮助修订的提交。我不确定如何处理混合了帮助更改和代码更改的提交。

所以,理想情况下,我希望将所有帮助修订拆分成一个功能分支,以便它可以合并到主分支中,并在日志中看起来更好。将代码调整单独提交到 master 中适当的位置。

相关问题是其中一些的原因。但毕竟我不打算在这里讨论这个。

如前所述,我只是想知道是否有可能改进我所指出的历史记录。

我是一个孤独的开发者,所以不必担心其他人的存储库。

感谢您的帮助和时间。

更新

我试了一下 rebase。我将所有要拆分的提交标记为编辑。然后我开始了变基。我勾选了 edit/split 并根据需要修改它们,直到完成。

现在我的日志是这样的:

在下面,它看起来像这样:

那么我该如何删除该部分呢?我必须在创建功能分支和挑选樱桃之前解决这个问题。

所以,在顶部,我现在有一组新的所有提交,包括拆分的提交。

知道了 - 强制推送了 master 分支。

这可以通过 cherry-picking 和变基的混合来实现。

  1. 在所有受影响的提交之前创建一个新的功能分支。然后 select 您希望在该新功能分支上进行的所有提交和 select "Cherry-pick commits"。之后你有一个分支,其中只有 selected 提交。

  2. 切换回上一个分支并对新创建的分支的父分支进行变基(您需要启用 "force")。现在再次标记所有 cherry-picked 提交并 select 跳过并开始变基。现在,该分支不再包含 cherry-picked 个分支。