Git потерял след того факта, что я сливался

#git

#git

Вопрос:

Я только что завершил очень сложное слияние, но через некоторое время во время слияния я сделал что-то, из-за чего git потерял представление о том, что я сливался (вероятно, я это сделал git reset или что-то в этом роде).

Теперь все файлы, которые у меня есть локально, правильно объединены, но я не могу завершить слияние, так как git не знает, что я объединяю. Есть какие-нибудь идеи, как выйти из этой проблемы? Слияние заняло действительно много времени, поэтому я не хочу делать это снова вручную. В принципе, я хочу сохранить локальное состояние точно таким, какое оно есть, но просто сообщите git, что он должен создать коммит слияния (из текущей ветви и определенной другой ветви) вместо обычного коммита.

Комментарии:

1. Все ли файлы в текущем коммите имеют то содержимое, которое они должны иметь?

2. Фиксации еще не было, только некоторые поэтапные и некоторые неструктурированные изменения, поскольку я разрешал конфликты слияния.

Ответ №1:

Git ищет ссылку с именем MERGE_HEAD 1, чтобы определить, должна ли следующая фиксация быть фиксацией слияния. Эта ссылка должна указывать на вершину ветви для слияния с текущей (то есть с целевой ветвью).

В вашем случае вы можете просто создать MERGE_HEAD самостоятельно, используя update-ref команду:

 git update-ref MERGE_HEAD $(git rev-parse <target-branch>)
git merge --continue
  

MERGE_HEAD автоматически удаляется в конце операции слияния, независимо от того, была ли она завершена или прервана.


1, который на самом деле является не чем иным, как текстовым файлом в .git каталоге.