我在分支机构工作,我从远程撤回了基准,但发生了一些合并冲突。我解决了冲突,但在git add
和git rebase --continue
之前,我分心了并继续进行实际工作。现在,我的状态是我的工作树在代码方面很好,解决了旧冲突,并出现了新代码,但是git status
显示You are currently rebasing branch...
我该怎么做才能解决此问题,又不会弄乱我的工作?
您可以继续使用git rebase --continue
进行重新设置。
不幸的是,这时很难解开事物。
重新存储仍在进行中,据Git所知,您仍在修复冲突提交的副本。因此,您自那时以来所做的一切都必须成为解决冲突的一部分。记住,Git实际上并没有存储差异。它只是存储完整的快照。您可以根据需要将every文件替换为全新版本:Git不在乎,它只是拍摄快照。因此,如果您现在继续,您将把[[本来打算作为修正的一部分包括在内的更改组合到Git认为仍然修正的内容中。
(这可能并不可怕!如果可以,请考虑这样做。但是,如果不能确定,请继续阅读。)如果到目前为止,您的重新设置并不困难,我建议您仅将工作树中的所有内容移动(或复制),因为它现在已经完全移到了存储库之外的其他目录中。这样,您就可以将“您为解决冲突所做的一切”和“自那时以来所做的一切”的组合完全在Git之外使用。然后,您可以:
git rebase --abort
这将正在进行的重新设置,并将所有内容恢复到甚至开始重新设置之前的状态。现在,您所有的工作都从存储库中删除了,这就是为什么将它保存在outside仍然存在的存储库中的原因。然后,重做停止
git pull
开始的基准,可能很简单[<1]:git rebase
git add
和git rebase --continue
。您可以查看保存的工作(在存储库外部),以查看上次如何修复它们。一旦变基真正完成,您就可以对外部文件使用git diff
,或仅将外部文件复制回内部并使用git diff
。((有一些方法可以将文件存储在Git中,临时分支上或使用
git stash
,但我不建议这样做。)
1这完全取决于您用于git pull --rebase
命令的内容。如果您仅运行git pull --rebase
,则可以运行git rebase
。如果您还有其他参数,则可能需要git rebase FETCH_HEAD
。