Poiché è già stato eseguito il push dei commit in un repository remoto, il modo migliore è probabilmente quello di ripristinare i due commit in modo da non creare alcun problema per chiunque abbia già estratto dal repository remoto.
Esempi utilizzare la storia segue commit:
e512d38 Adding taunts to management.
bd89039 Adding kill switch in case I'm fired.
da8af4d Adding performance optimizations to master loop.
db0c012 Fixing bug in the doohickey
Se si desidera solo per ripristinare le commit senza modificare la storia, è possibile effettuare le seguenti operazioni:
git revert e512d38
git revert bd89039
In alternativa, se si don' Se vuoi che gli altri vedano che hai aggiunto il kill switch e quindi rimosso, puoi ripristinare il repository usando quanto segue (tuttavia, ciò causerà problemi ad altri che hanno già tirato le tue modifiche dal remoto):
git reset --hard da8af4d
git push origin -f localBranch:remoteBranch
dove è il nome del ramo locale e remoteBranch
è il nome del ramo remoto.
fonte
2012-03-16 03:21:29
Tu * puoi * farlo, ma è sconsigliabile visto che chiunque altro ha afferrato i commit nel frattempo otterrà ... beh, per evitare parolacce, diciamo "dovranno lavorare duro per riprendersi dalle tue azioni ". :-) È meglio usare "git revert" per aggiungere un nuovo commit che annulla un commit precedente. (Pensa a un "ripristino" come "aggiungi un commit la cui patch è l'azione di annullare esattamente un commit precedente", poiché è quello che è.) – torek
@torek Ci stavo pensando all'inizio, ma penso che shadowfax potrebbe avere altro scopi, come mantenere ogni commit remoto in grado di funzionare correttamente, altrimenti avrebbe pensato di "ripristinare e spingere". – peter
Penso che potresti essere sorpreso da quante persone non capiscono "git revert".D'altra parte, ci potrebbe essere un motivo completamente diverso (come nella risposta di David M. Syzdek). In alcuni casi non ci sono buone soluzioni, solo la meno cattiva (che varia a seconda della situazione). – torek