2010-03-28 13 views
9

Utilizzo di TortoiseGit (sto cercando di evitare l'utilizzo della riga di comando) come si eliminano tutti i commit che derivano da un certo commit e "tornare indietro nel passato" (esempio: uso: continua fare qualcosa, immaginavo che non mi piacesse dove stava andando e ho deciso di tornare "indietro" ignorando tutto in mezzo).Utilizzo di TortoiseGit cancellando tutto dopo un certo commit

In breve, desidero eseguire 5 commit "indietro" e cancellarli in seguito.

risposta

1

Dalla riga di comando, è possibile utilizzare il comando di ripristino o ripristino. TortoiseGit dovrebbe avere comandi simili, forse puoi accedervi osservando il registro di commit?

(Non ho usato TortoiseGit quindi non posso controllare)

+0

Oh, okey. Bene, per quanto posso vedere, ha ripristinato il comando. Ma inverte i cambiamenti che ho apportato nella copia di lavoro, fino all'ultimo commit. Non ho visto un modo per ripristinare diversi commit "down the road".In ogni caso, almeno +1 per provare :) – richard

+0

Ah, non ho notato che volevi tornare indietro 5 commit X ( 'git-reset' (--hard) dovrebbe essere il tuo nuovo amico;) – Tuxified

2

non ho mai usato Tortoise nulla (se non si considera il gruppo di musica elettronica), ma ti darò queste informazioni nel caso in cui non trovi il modo di farlo con la GUI o finisci per decidere di andare a fare la CLI dopo tutto.

Come menzionato @Tuxified, è possibile eseguire questa operazione con git reset --hard <COMMIT>. Devi specificare un commit, che può essere fatto in una qualsiasi panoplia intimidatoria di possibili modi; il più comune ha forme come HEAD~4, che specifica un commit 4 viene eseguito prima del capo del ramo corrente e deadbeef42, che specifica un commit il cui SHA1 inizia con 0xdeadbeef42. Se stai usando linux o OSX, puoi ottenere tutti i dettagli sugli specificatori di commit tramite man git-rev-parse, in "SPECIFICARE LE REVISIONI".

È anche possibile rinominare il ramo corrente (git branch -m new_branch_name) e quindi creare un nuovo ramo con la testa nel punto in cui si desidera ripristinare. Il vantaggio è che se finisci per voler usare tutto o parte del materiale che hai fatto lì, puoi comunque accedervi facilmente; e se digiti il ​​commit, sei salvato da un grande momento sacro. Inoltre i rami git sono super leggeri quindi l'unico vero svantaggio è che ci sarà un altro ramo elencato. Per creare il nuovo ramo principale useresti git branch master <COMMIT> e poi lo verifichi. Quindi l'effetto netto qui è uguale alla prima opzione, eccetto che hai ancora le tue vecchie modifiche salvate nel ramo new_branch_name. Puoi persino unire le modifiche in un secondo momento, dopo che il nuovo commit è stato effettuato su master, se ti va.

Si noti che una di queste tecniche è considerata "storia di riscrittura" e causerà problemi se si condivide il repository con altri. Se sei intelligente e stai spingendo verso un repository di backup in cloud city o su un altro pc, dovrai risolvere le cose a tale scopo prima di poterlo spingere nuovamente.

Questo è probabilmente il modo più informazioni di cui hai bisogno in questo momento, ma se finisci per usare git molto probabilmente vorrai imparare questa roba a un certo punto. Spiacente, non so come usare Tortoise ...

27

Vai a TortoiseGit -> Mostra registro. Seleziona il commit più recente che vuoi mantenere, tutto quanto sopra verrà cancellato. Quindi fai clic destro su di esso e seleziona "Ripristina" master "su questo" e scegli Hard. Fai attenzione però perché una volta fatto questo, tutti i commit dopo saranno persi per sempre a meno che non vengano memorizzati in un altro ramo da qualche parte.

+4

Side nota: quando si imposta questa modifica su Master, è necessario selezionare "Forza sovrascrittura ramo esistente" oppure non funzionerà. – Powerlord

+5

In TortoiseGit v1.8.14 la "Sovrascrittura forzata" è stata modificata in "Opzioni"> "Forza: può scartare"> spuntando la casella di controllo "modifiche conosciute". Non avevo bisogno di usare l'opzione "modifiche sconosciute" più distruttiva. – ShawnFeatherly

Problemi correlati