在发生冲突后实际进行git rebase之前开始工作

问题描述 投票:1回答:1

我在分支机构工作,我从远程撤回了基准,但发生了一些合并冲突。我解决了冲突,但在git addgit rebase --continue之前,我分心了并继续进行实际工作。现在,我的状态是我的工作树在代码方面很好,解决了旧冲突,并出现了新代码,但是git status显示You are currently rebasing branch...

我该怎么做才能解决此问题,又不会弄乱我的工作?

git git-rebase git-pull
1个回答
0
投票

您可以继续使用git rebase --continue进行重新设置。


0
投票

不幸的是,这时很难解开事物。

重新存储仍在进行中,据Git所知,您仍在修复冲突提交的副本。因此,您自那时以来所做的一切都必须成为解决冲突的一部分。记住,Git实际上并没有存储差异。它只是存储完整的快照。您可以根据需要将every文件替换为全新版本:Git不在乎,它只是拍摄快照。因此,如果您现在继续,您将把[[本来打算作为修正的一部分包括在内的更改组合到Git认为仍然修正的内容中。

(这可能并不可怕!如果可以,请考虑这样做。但是,如果不能确定,请继续阅读。)

如果到目前为止,您的重新设置并不困难,我建议您仅将工作树中的所有内容移动(或复制),因为它现在已经完全移到了存储库之外的其他目录中。这样,您就可以将“您为解决冲突所做的一切”和“自那时以来所做的一切”的组合完全在Git之外使用。然后,您可以:

git rebase --abort

这将

停止

正在进行的重新设置,并将所有内容恢复到甚至开始重新设置之前的状态。现在,您所有的工作都从存储库中删除了,这就是为什么将它保存在outside仍然存在的存储库中的原因。然后,重做git pull开始的基准,可能很简单[<1]:

git rebase

这将得到相同的冲突,您将不得不再次解决,但是这次您可以记住之后的git addgit rebase --continue。您可以查看保存的工作(在存储库外部),以查看上次如何修复它们。
一旦变基真正完成,您就可以对外部文件使用git diff,或仅将外部文件复制回内部并使用git diff

((有一些方法可以将文件存储在Git中,临时分支上或使用git stash,但我不建议这样做。)


1这完全取决于您用于git pull --rebase命令的内容。如果您仅运行git pull --rebase,则可以运行git rebase。如果您还有其他参数,则可能需要git rebase FETCH_HEAD
© www.soinside.com 2019 - 2024. All rights reserved.