Git 将旧的提交移至新分支,以便我稍后可以将它们合并回来

Git Move older commit(s) to new branch so I can merge them back later

还有一个 Git 移动提交问题。

我有一个主分支,所有工作都致力于此。客户决定的功能 123 不再需要发布(稍后发布)。我需要将提交 B(由于我对 Git 工作流程缺乏完整的理解,因此出现了这个问题)到另一个批次中,以便稍后将其合并。

很像如果我能及时回到过去,知道那些提交需要在它们自己的分支上然后执行,这样我就可以在需要该功能时轻松地进行合并。

A --> B --> C --> D (master)

想做:

A --> __ --> C --> D (master)
       \
        B (Feature 123)    

所以我可以稍后再做:

A --> __ --> C --> D --> FUTURE COMMITS --> Z  (master)
       \                                /
        B -----------------------[Merge] (Feature 123)

我想接受 Commit B 并将其移动到 Master 这样我可以稍后将它合并到 master 中。

我知道我需要在该提交处进行分支,但如果 master 仍然知道这些更改,我对我没有任何好处。我知道我在考虑这个错误,所以任何煽动都会受到赞赏。

此外,这些提交已被推送到源并已被其他开发人员拉下。

您可以在 B 创建一个新的功能分支,然后在 A 上重新设置主分支:

git branch feature123 B
git rebase --onto feature123^ feature123 master

这将改写主分支的历史。它将在 A 之上重播 CD,这可能会导致已经拉取这些提交的人感到困惑。

与您在图表中说明的内容不完全匹配但避免重新编写 master 分支历史记录的替代方法是还原提交 B:

git revert B

这将在 master 分支上记录一个新的提交,恢复在 B 中引入的更改。您稍后可以使用 git cherry-pick B.

重新应用该提交