Git将旧的提交移动到新分支,以便稍后将它们合并

时间:2015-01-29 17:11:01

标签: git repository git-branch git-merge

又一个Git Move Commit问题。

我有一个主分支,所有工作都致力于。客户决定在发布中不再需要 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)

我想接受提交B并将其移至,以便稍后将其合并为主数据。

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

此外,这些提交已被推向原点并被其他开发者拉下来。

1 个答案:

答案 0 :(得分:2)

您可以在B创建新的功能分支,然后在A之上重新绑定主分支:

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

这将重写master分支的历史记录。它会在C之上重播DA,这可能会导致已经撤消这些提交的人混淆。

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

git revert B

这将在主分支上记录新的提交,恢复B中引用的更改。您可以稍后使用git cherry-pick B重新应用该提交。