又一个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并将其移至主,以便稍后将其合并为主数据。
我知道我需要在该提交处进行分支,但如果主人仍然知道这些更改,我对我没有好处。我知道我在考虑这个错误,所以任何煽动都会受到赞赏。
此外,这些提交已被推向原点并被其他开发者拉下来。
答案 0 :(得分:2)
您可以在B
创建新的功能分支,然后在A
之上重新绑定主分支:
git branch feature123 B
git rebase --onto feature123^ feature123 master
这将重写master分支的历史记录。它会在C
之上重播D
和A
,这可能会导致已经撤消这些提交的人混淆。
与您在图表中说明的内容完全不符,但避免重新命名master
分支的历史记录的替代方法是还原提交B
:
git revert B
这将在主分支上记录新的提交,恢复B
中引用的更改。您可以稍后使用git cherry-pick B
重新应用该提交。