Посмотрите на свой граф коммитов (с помощью gitk или аналогичной программы). Вы увидите коммиты из запроса на получение, и вы увидите свои собственные коммиты и коммит слияния (если это не было слияние с ускоренной перемоткой вперед). Вам просто нужно найти последний из ваших собственных коммитов перед слиянием и сбросить ветку на этот коммит.
(Если у вас есть ветвь reflog, еще проще найти коммит до слияния.)
(Изменить после получения дополнительной информации в комментариях:)
Хорошо, давайте посмотрим на график:
Я полагаю, что последний (самый правый) коммит был вашим неправильным объединить по запросу pull , который объединил синюю линию, показанную здесь.
Ваш последний хороший коммит будет тем, что был ранее на черной линии, здесь отмечен красным:
Сбросьте до этого коммита, и все будет в порядке.
Это означает, что в вашей локальной рабочей копии сделайте это (убедившись, что у вас больше нет незафиксированных файлов, например, с помощью git stash):
git checkout master
git reset --hard 7a62674ba3df0853c63539175197a16122a739ef
gitk
Теперь подтвердите, что вы действительно выполняете коммит, который я там пометил, и вы не увидите ничего из извлеченного материала в его происхождении.
git push -f origin master
(если ваш пульт Github назван origin
- иначе измените имя).
Теперь все должно выглядеть правильно и на github. Коммиты все еще будут в вашем репозитории, но не будут доступны ни одной ветке, поэтому не должны причинять там никакого вреда. (И они все еще будут в хранилище RogerPaladin, конечно.)
(Возможно, существует специфический для Github веб-способ сделать то же самое, но я не слишком знаком с Github и его системой управления запросами на получение.)
Обратите внимание , что, если кто-то уже мог вытащить вашего мастера с неверным коммитом, у него возникнет та же проблема, что и у вас, и он не сможет внести свой вклад. перед сбросом на новую мастер-версию.
Если есть вероятность, что это произошло, или вы просто хотите избежать каких-либо проблем, используйте команду git revert
вместо git reset
, чтобы отменить изменения с новым коммитом, вместо того, чтобы вернуться к более старому. (Некоторые люди думают, что вам никогда не следует делать сброс с опубликованными ветками.) Другие ответы на этот вопрос см. В разделе «Как это сделать».
На будущее:
Если вам нужны только некоторые коммиты ветви RogerPaladin, рассмотрите возможность использования cherry-pick
вместо merge
. Или свяжитесь с RogerPaladin, чтобы переместить их в отдельную ветку и отправить новый запрос на извлечение.