(Базовое предположение: у вас достаточно прав на репо, чтобы протолкнуть с помощью --force
, потому что, наоборот, ваш друг, просящий вас что-нибудь почистить, был бы неудовлетворительным требованием)
Когда вы выдвигали ветку (master
), git фактически выдвигал любые новые коммиты , которые были доступны через наследство, начиная с коммита, на который указывал ваш новый ref master
в данный момент. .
Но когда вы изначально клонировали исходное хранилище, его собственная версия master
указывала на коммит, который мы пытаемся восстановить сверху, hislastcommitsha
Так что вам нужно
# as you already guessed, rewind your version of master
git reset --hard hislastcommitsha
# then push it to his repo
git push --force origin master
Тем не менее, важное примечание : на этом этапе новые отправленные вами коммиты (ошибочно) не удаляются из его репо, они просто не ссылаются ни на одну ветку, поэтому они теперь являются кандидатами на сборку мусора. коллекция.
По этой причине вы все еще можете проверить их в своем локальном репо.
Если по какой-либо причине ваш друг не хочет ждать обычного времени сбора мусора, у него есть возможность запустить его вручную с помощью git gc
и любые параметры будут соответствовать вашей ситуации, это до его.