#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
каталоге.