Начал работать до фактического выполнения git rebase после конфликтов - PullRequest
1 голос
/ 31 октября 2019

Я работаю в ветке, и я извлек ребаз из удаленного компьютера, и у меня возникли некоторые конфликты слияния.
Я разрешил конфликты, но до git add и git rebase --continue я отвлекся и продолжаю выполнять реальную работу.
Теперь я нахожусь в состоянии, что мое рабочее дерево прекрасно с точки зрения кода с разрешенными старыми конфликтами и новым кодом, но git status показывает You are currently rebasing branch...

Что я могу сделать, чтобы исправить это и не испортить мойработа

Ответы [ 2 ]

1 голос
/ 31 октября 2019

К сожалению, на данный момент довольно сложно распутать вещи.

Перебазирование продолжается, и, насколько известно 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.

0 голосов
/ 31 октября 2019

Вы можете просто продолжить перебазирование с помощью git rebase --continue.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...