Предположим, ветвь master
.Запустите git reflog master
.В выходных данных вы должны быть в состоянии найти одну строку сверху, которая указывает, где master
был после git pull
, в этом шаблоне
b3c23d5 master@{n}: pull foo master: Merge made by the 'recursive' strategy.
, а затем еще одну следующую строку, которая указывает, где master
было после git filter-branch
, в этом паттерне
569a613 master@{n}: filter-branch: rewrite
А строка прямо под предыдущей указывает, какой коммит master
был до git filter-branch
.Это может выглядеть как
123abcd master@{n}: foo bar baz
Ожидается, что хэши будут другими в вашем хранилище.В этом примере 569a613
- это тот самый коммит, который вы должны нажать принудительно.Чтобы решить проблему, необходимо выполнить 2 шага:
1) принудительное нажатие 569a613
для обновления master
в удаленном хранилище,
git push origin -f 569a613:master
2) выяснитькоммиты, выдвинутые другими, и применить эти коммиты к новым master
,
git log --oneline 123abcd..b3c23d5^2
коммиты, перечисленные на 2-м шаге, могут быть неточными.Проверьте их с другими участниками.