2012-08-16 21 views
17

Mi piacerebbe vedere il file da un commit specifico in passato, sto pensando a git reset --hard ma non sarò in grado di vedere il commit oltre quello commettere. Come posso tornare a un commit (insieme allo stato dei file), dare un'occhiata ai file, andare di nuovo al presente?tornare a un commit specifico quindi tornare al presente

+1

Si può sempre fare semplicemente 'git show commit: path/file' per guardare solo un file. – fork0

+0

Ho dato un'occhiata a più file, hehe. e mi piace di più con un editor di testo. Grazie però, sarà utile la prossima volta! – Michelle

risposta

31

si supponga che il ramo corrente è master e il vecchio commit è a1b2c3, quindi è possibile modificare tutti i file nel vostro albero di lavoro di nuovo al vecchio impegnarsi con:

git checkout a1b2c3 

... e tornare a master con :

git checkout master 

Questo modo di saltellare nella vostra storia git (vale a dire il controllo di un commit con il suo nome di oggetto, noto anche come il suo hash o sha1sum) è molto utile per trovare un buon precedente per commettere git bisect, ad esempio, poiché non muoverà i tuoi rami.

Una cosa da tenere a mente è che si otterrà un avvertimento potenzialmente confuso quando si esegue questa operazione: se si estrae un commit dal nome dell'oggetto (a1b2c3) che ti metterà in uno stato noto come "HEAD distaccato" , dove HEAD, che di solito rappresenta il ramo corrente, punta invece direttamente su un particolare commit. Questo non è qualcosa di cui preoccuparsi - è molto utile per muoversi nella tua cronologia - ma vuol dire che se crei nuovi commit quando HEAD è staccato, non sposteranno un ramo in avanti.


fork0 sottolinea nel commento sotto il collegamento potenzialmente utile git checkout -, che verifica il ramo precedente o commit che HEAD indicate a.

+0

uomo cosa stavo pensando? Grazie. – Michelle

+0

Nessun problema - Spero che i commenti aggiuntivi che ho aggiunto siano utili. –

+4

C'è un modo più sicuro per tornare al commit precedente: 'git checkout -'. Questo metodo utilizza la registrazione di checkout (.git/logs/HEAD) e può determinare in modo sicuro quale era il commit precedente. – fork0