Veja o seu gráfico de confirmação (com gitk ou um programa similar). Você verá confirmações da solicitação pull e verá suas próprias confirmações e uma confirmação de mesclagem (se não for uma mesclagem de avanço rápido). Você apenas precisa encontrar o último de seus commit antes da mesclagem e redefinir a ramificação para esse commit.
(Se você tiver o reflog do ramo, deve ser ainda mais fácil encontrar o commit antes da mesclagem.)
(Edite depois de mais informações nos comentários :)
Ok, vamos olhar para o gráfico:
Presumo que o último commit (mais à direita) foi sua solicitação de mesclagem errada por pull , que mesclou a linha azul vista aqui. Sua última boa cometer seria o anterior na linha de preto, aqui marcados em vermelho:
Redefina para este commit e você deve ficar bem.
Isso significa que, na sua cópia de trabalho local, faça isso (depois de verificar se você não possui mais itens não confirmados, por exemplo, pelo git stash):
git checkout master
git reset --hard 7a62674ba3df0853c63539175197a16122a739ef
gitk
Agora confirme que você está realmente no commit que eu marquei lá, e você não verá nenhuma das coisas puxadas em sua ancestralidade.
git push -f origin master
(se o seu github remote for nomeado origin
- altere o nome).
Agora, tudo deve estar correto também no github. As confirmações ainda estarão no seu repositório, mas não poderão ser acessadas por nenhum ramo, portanto, não devem causar nenhum dano a ele. (E eles ainda estarão no repositório de RogerPaladin, é claro.)
(Pode haver uma maneira apenas específica da Web do Github de fazer a mesma coisa, mas não estou muito familiarizado com o Github e seu sistema de gerenciamento de solicitações de recebimento.)
Observe que se alguém já tiver puxado seu mestre com a confirmação incorreta, eles terão o mesmo problema que você atualmente e não poderão realmente contribuir de volta. antes de redefinir para sua nova versão principal.
Se é provável que isso aconteceu, ou você simplesmente deseja evitar problemas, use o git revert
comando em vez de git reset
, para reverter as alterações com uma nova confirmação, em vez de voltar para uma anterior. (Algumas pessoas pensam que você nunca deve redefinir com ramificações publicadas.) Veja outras respostas para esta pergunta sobre como fazer isso.
Para o futuro:
Se você deseja apenas alguns dos commit da filial de RogerPaladin, considere usar em cherry-pick
vez de merge
. Ou comunique-se com RogerPaladin para movê-los para uma ramificação separada e enviar uma nova solicitação de recebimento.