1

即我怎么去

主:ABCDEFG

大师:ABEFG
           \
特点:CD

显然,现在很明显 CD 应该在功能分支中,因为该更改现在已延迟。

这与我在这里这里看到的其他问题略有不同

4

2 回答 2

3

HEAD(G) 开始master

git branch feature D  # Create new branch at D.
git rebase -i B       # Use interactive rebase to remove C D from master.
于 2013-10-25T13:27:45.767 回答
2

这个答案假设您要么没有推动master,要么您是唯一从事该项目的人(在这种情况下,这并不重要)。如果您推送了master并且其他人提取了您的更改,您需要与他们沟通以确保他们适当地更新他们的存储库。

                                  # Assuming you're on master
git branch <feature> <D>          # Create a branch named <feature> at commit <D>
git rebase --onto <B> <D> master  # Transplant branch

Git rebase文档对做什么有很好的图形解释rebase --onto


如果你想rebase完全避免,你应该能够做到

git branch <feature> <D>          # Create a branch named <feature> at commit <D>
git revert <D>                    # undo D
git revert <C>                    # undo C

这将导致这样的历史

A-B-C-D-E-F-G-!D-!C
      ^           ^
   feature      master

签出master的任何人都会看到代码,就好像提交CD从未发生过一样,您的历史记录中只会有几次还原。这是从已推送的分支中支持更改的首选方式。

于 2013-10-25T13:45:48.430 回答