2

我的历史现在看起来有点像这样:

                  origin/master
                        |
A --- B --- C --- D --- E
                   \
                     -- F
                        |
                     master

我想在 E 之后重新调整我的更改(提交 F),但是在提交 EI 中有一些相当大的问题想先纠正。基本上,这就是我希望能够做到的:

                  origin/master
                        |
A --- B --- C --- D --- E --- G
                   \
                     -- F
                        |
                     master

然后我想在最后重新定义 F ,以获得最终的简单结果:

                              origin/master
                                    |
A --- B --- C --- D --- E --- G --- F

当我在主干上工作时,如何“搁置”提交 F,然后在以后重新设置它?我会假设它会涉及git branch,但我不知道足够的 git 来知道要发出的命令序列。做这个的最好方式是什么?

4

2 回答 2

2

创建一个指向您的F提交的分支:

git branch tmp

从分支中删除F提交:master

git reset --hard HEAD~1

进行修复并提交它们:

git commit

F在当前分支之上添加提交master(这可能会导致冲突,因此请解决它们):

git cherry-pick tmp

删除临时分支:

git branch -d tmp

所以你真的不需要git rebase在这里,它是为了更复杂的事情,或者至少不是为了处理一次提交。

于 2012-08-16T05:16:49.973 回答
0

我假设你有一个单独的 F 分支,如果没有 - 我错过了,你应该创建它。
我建议你不要在提交 G 的 master 上工作,但也有一个单独的分支,
请为它创建一个单独的分支。
1.然后,尝试针对该分支重新设置包含 f 的分支(也许使用 git rebase --onto,
尽管我认为还有另一种方法)
另一种方法是执行 git format-patch origin/ master 在包含 F 的分支上,然后在包含 G 的分支上应用这个补丁。
你当然可能会遇到冲突。
根据我的经验 - 选项 1 更好,由于某种原因, git apply 和 git am 比对另一个分支执行变基更“脆弱”(对不起这个坏词)。

于 2012-08-16T05:15:36.810 回答