Пару дней назад я столкнулся с такой же ситуацией.
Возможная причина
Я выяснил, что возможной причиной таких слияний может быть кто-то, использующий
git merge -s ours <somebranch>
, даже не подозревая об этом.
Некоторые разработчики не используют консоль и pull / commit / push, используя свои IDE. Когда что-то идет не так, некоторые IDE предоставляют такие опции, как «force», «resolve to mine» и т. Д., На которые не всегда нужно нажимать, если только кто-то точно не знает, что он делает.
Плохо то, что после такого коммитного слияния нажатый git скажет вам, что все коммиты слитой ветки находятся там, но вы не найдете ни одного из этих изменений ... Грустная история.
Решение идти
Мы решили вернуться к мастеру сброса к последней точке, когда все было в порядке.
git checkout master
git reset --hard
git reset --hard <OKAY_POINT>
В вашем случае <OKAY_POINT>
- это 3221961
.
А потом нам пришлось насильно подтолкнуть это вверх по течению.
git push --force
В результате origin/master
был сброшен в состояние до того, как произошло плохое слияние.
Обычно это НЕ хорошая идея. Но мы пошли на это, поскольку вся команда является локальной, большинство парней знали о том, что происходит, и никто не совершал никаких действий над этим сломанным мастером в тот момент, когда происходил принудительный сброс.
После этого разработчик, который сломал мастер, должен был повторить его слияние, и на этот раз правильным путем.
Единственный другой вариант без сброса удаленного устройства, который я вижу, - это ручное объединение всего, что могло быть «стерто». Что не кажется мне чем-то простым.