История мастера Github потеряна после слияния веток

Я выполнил слияние git, выполнив следующие шаги:

этап проверки git

git тянуть

мастер проверки git

этап слияния git

git push

После этой операции, когда я захожу на github.com, чтобы просмотреть историю коммитов, вместо того, чтобы показывать один коммит «слияние этапа с мастером», он перечисляет все коммиты, которые были сделаны непосредственно на этапе.

Теперь мне нужно откатить слияние с master, но нет ни одной фиксации, которую я мог бы отменить. Кто-нибудь сталкивался с этой проблемой, и если да, то как решить эту проблему?


person Vasu Kargi    schedule 19.03.2014    source источник


Ответы (1)


Чтобы достичь этого коммита «этап слияния с мастером», вы должны сделать коммит без быстрой перемотки вперед при слиянии, например. git merge --no-ff stage.

Теперь, когда слияние уже выполнено, вы можете вернуться к коммиту, который был последним коммитом на мастере перед запуском git merge stage, и выполнить новое слияние no-ff. Нет точного способа сказать, какой именно коммит был, но посмотрите git reflog, он, вероятно, будет содержать ценную информацию, иначе вам придется использовать свое суждение и просто решить, где начался этап.

person hlovdal    schedule 19.03.2014
comment
Я могу использовать --no-ff, чтобы получить единственную фиксацию в истории. Спасибо. Просто интересно, изменилось ли это поведение в последнее время, что git merge по умолчанию выполняет слияние ff. Две недели назад я выполнил слияние, не указав параметр --no-ff, и получил один коммит, аналогичный использованию параметра --no-ff. - person Vasu Kargi; 21.03.2014
comment
Насколько мне известно, ускоренное слияние всегда было по умолчанию. Но ff не всегда возможно, поэтому в этих случаях git создаст коммит слияния. - person hlovdal; 21.03.2014
comment
Как вернуться к фиксации, которая была последней фиксацией на master? - person Nuzhat Zari; 13.03.2018