如果您没有发现任何差异,我怀疑您丢失了更改。您可能会使用git reflog
来识别在重新设置基准之前已存在的分支,并用于git reset --hard <my-branch-tip-before-rebase>
取回原始分支。是的,您将不得不再次执行该过程。:-(
我不太确定您最终如何看待他们。我本来希望在您提供的命令中看到以下内容:
1 = 2 = 3 = 4 (master)
\ \
\ 5' = 6' = 8' (my_branch)
\
5 = 6 = 7
在这种情况下,您可能应该使用rebase --onto
:
git rebase --onto master <commit id for 6> my_branch
那会给你留下一个看起来像这样的图:
1 = 2 = 3 = 4 (master)
\ \
\ 8' (my_branch)
\
5 = 6 = 7
至于丢失更改,确实需要一些实践来处理合并冲突,尤其是当您有几个看起来几乎相同的大块时。我总是求助于提交所引入的实际差异,并尝试梳理出该更改并将其与分支中已有的内容以适当的方式合并。我可以轻松地看到您的更改可能在那里丢失了。
要记住的一件事。如果您不希望发生一堆合并冲突-因为您没有感觉到源头之间的分歧太大,那么看到那是做错事情的警告标志。最好进行备份,方法是:git rebase --abort
调查分支机构,然后再次检查是否遇到冲突。确保记下发生冲突的位置(在变基将您踢到命令行之前,通常会有一个“正在应用...”)。通常这是一个很好的起点。
有时,冲突是不可避免的,并且要克服这些乏味的工作。但是我怀疑,通过实践,您将较少遇到这个问题。
有关在分支之间移植更改的更多信息,请参见git rebase手册页。搜索“ rebase --onto”。第一次点击应该使您进入有关将更改移植到另一个分支的部分。
git rebase --skip
(而不是--continue
)时,是否有可能“跳过”了在重新定级期间实际上仍然有意义的更改?