Guarda il tuo grafico di commit (con gitk o un programma simile). Vedrai i commit dalla richiesta pull, vedrai i tuoi commit e un commit di merge (se non era un merge ad avanzamento rapido). Devi solo trovare l'ultimo dei tuoi commit prima dell'unione e reimpostare il ramo su questo commit.
(Se si dispone del reflog del ramo, dovrebbe essere ancora più facile trovare il commit prima dell'unione.)
(Modifica dopo ulteriori informazioni nei commenti :)
Bene, diamo un'occhiata al grafico:
Presumo che l'ultimo commit (all'estrema destra) sia stata la tua unione sbagliata per richiesta pull , che ha unito la linea blu vista qui. Il tuo ultimo buon commit sarebbe quello precedente sulla linea nera, qui segnato in rosso:
Ripristina questo commit e dovresti andare bene.
Ciò significa che nella tua copia di lavoro locale esegui questa operazione (dopo esserti assicurato di non avere più contenuti non impegnati, ad esempio git stash):
git checkout master
git reset --hard 7a62674ba3df0853c63539175197a16122a739ef
gitk
Ora conferma che sei davvero sul commit che ho segnato lì, e non vedrai nessuna delle cose estratte nei suoi antenati.
git push -f origin master
(se il tuo telecomando github è chiamato origin
, altrimenti cambia il nome).
Ora anche tutto dovrebbe apparire su Github. I commit rimarranno comunque nel tuo repository, ma non raggiungibili da nessuna filiale, quindi non dovrebbero farti del male. (E saranno ancora sul repository di RogerPaladin, ovviamente.)
(Potrebbe esserci un modo specifico di Github solo web di fare la stessa cosa, ma non ho troppa familiarità con Github e il suo sistema di gestione delle richieste pull.)
Tieni presente che se qualcun altro ha già eseguito il pull del tuo master con un commit errato, ha lo stesso problema che hai attualmente e non può davvero contribuire. prima di ripristinare la nuova versione principale.
Se è probabile che ciò sia accaduto, o semplicemente vuoi evitare qualsiasi problema, usa il git revert
comando invece di git reset
, per ripristinare le modifiche con un nuovo commit, invece di tornare a uno più vecchio. (Alcune persone pensano che non dovresti mai reimpostare con le filiali pubblicate.) Vedi altre risposte a questa domanda su come farlo.
Per il futuro:
Se desideri solo alcuni dei commit della filiale di RogerPaladin, prendi in considerazione l'utilizzo cherry-pick
invece di merge
. Oppure comunica a RogerPaladin per spostarli in un ramo separato e inviare una nuova richiesta pull.