К сожалению, на данный момент довольно сложно распутать вещи.
Перебазирование продолжается, и, насколько известно Git, вы все еще исправляете копию конфликтующего коммита. То, что вы сделали с тех пор, должно быть частью урегулирования конфликта. Помните, Git на самом деле не хранит различия. Он просто хранит полные снимки. Вы можете, если хотите, заменить каждый файл совершенно новой версией: Git все равно, он просто делает снимок. Следовательно, если вы продолжите сейчас, вы объедините свои изменения, которые вы не намеревались включить как часть исправления, в то, что, по мнению Git, все еще исправление.
(Это может быть не так уж плохо! Если все в порядке, подумайте над этим. Но, если это не так, продолжайте читать.)
Если ваш ребаз до сих пор не был сложным, япредложил бы просто переместить (или скопировать) все в вашем рабочем дереве, как оно есть сейчас, в какой-то другой каталог за пределами хранилища. Таким образом, у вас есть комбинация «что вы сделали, чтобы исправить конфликты» и «что вы сделали с тех пор», доступная за пределами этого Git. Затем, сделав это, вы можете:
git rebase --abort
, который остановит текущую перебазировку и вернет все обратно к тому, что было до того, как вы даже начали перебазировку. Вся ваша работа теперь ушла из репозитория, поэтому вы сохранили ее за пределами репозитория, где он еще существует.
Затем верните ребаз, запущенный 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
.