Come posso eseguire il rollback di un repository github a un commit specifico?

Il mio github ha 100 commit in questo momento. Ho bisogno di ripristinare il repository per commettere 80 e rimuovere tutti quelli successivi.

Perché? Questo repository dovrebbe essere per la fusione da vari utenti. Un sacco di fusioni sono entrate in me come commit da me, a causa di modifiche eccessive. Ciò era dovuto a un errore di etichettatura delle mie filiali remote, in cui 3 sviluppatori erano etichettati l’uno con l’altro. Devo resettare a quel punto e poi tirare in avanti.

Volevo rebase, come in questo esempio: come posso rimuovere un commit su GitHub?

Tuttavia, Git vuole che io faccia molta gestione dei conflitti. c’è un modo più facile?

git reset --hard  git push -f   

Nota: come scritto nei commenti seguenti, l’ uso di questo è pericoloso in un ambiente collaborativo: stai riscrivendo la cronologia

Un altro modo:

Esegui il checkout del ramo che vuoi ripristinare, quindi reimposta la copia di lavoro locale sul commit che vuoi essere l’ultimo sul server remoto (tutto ciò che seguirà andrà ciao-ciao). Per fare ciò, in SourceTree ho fatto clic con il pulsante destro del mouse su e ho selezionato “Reimposta BRANCHNAME su questo commit”.

Quindi accedere alla directory locale del repository ed eseguire questo comando:

git -c diff.mnemonicprefix = false -c core.quotepath = false push -v -f –tags REPOSITORY_NAME BRANCHNAME: BRANCHNAME

Questo cancellerà tutti i commit dopo quello corrente nel tuo repository locale, ma solo per quel ramo.

Per annullare il commit più recente, faccio questo:

Primo:

 git log 

ottenere l’ID SHA più recente da annullare.

 git revert SHA 

Questo creerà un nuovo commit che fa esattamente l’opposto del tuo commit. Quindi puoi spingere questo nuovo commit per portare la tua app allo stato in cui si trovava prima, e la tua cronologia git mostrerà queste modifiche di conseguenza.

Questo è buono per una ripresa immediata di qualcosa che hai appena commesso, che trovo più spesso il caso per me.

Come ha detto Mike, puoi anche fare questo:

 git revert HEAD 

Quando faccio gli aggiornamenti delle branch da master, noto che a volte faccio un over-click e faccio in modo che il branch si unisca anche al master. Ho trovato un modo per annullarlo.

Se il tuo ultimo commit era un’unione, è necessario un po ‘più di amore:

git revert -m 1 HEAD