Risposte:
Utilizzare git checkout <sha1>
per verificare un particolare commit.
git log
mostra solo il primo commit ora, posso scoprire lo sha1 del prossimo commit?
git log --oneline
e incollare l'output in un file di testo per riferimento (le somme sha1 abbreviate che fornisce sono garantite come uniche). Un'altra opzione, se la tua storia è lineare, è capire quanti commit ci sono dal primo commit fino al loro master
utilizzo git checkout master~543
(se ci sono 543 commit), quindi git checkout master~542
, ecc.
Per passare a una versione / commit particolare eseguire i seguenti comandi. HASH-CODE da cui puoi otteneregit log --oneline -n 10
git reset --hard HASH-CODE
Nota : dopo il ripristino di una versione / commit particolare è possibile eseguire git pull --rebase
, se si desidera ripristinare tutti i commit che vengono scartati.
reset
non solo controlla un particolare punto nel grafico, ma sposta anche il tuo ramo attualmente estratto
reset
, tutte le modifiche in sospeso vengono eliminate.
git pull --rebase
funziona solo se hai un telecomando per il tuo repository ed è aggiornato.
È possibile ottenere una vista grafica della cronologia del progetto con strumenti come gitk
. Corri:
gitk --all
Se desideri effettuare il checkout di un ramo specifico:
git checkout <branch name>
Per un commit specifico, utilizzare l'hash SHA1 anziché il nome del ramo. (Vedi Treeishes nel Git Community Book , che è una buona lettura, per vedere altre opzioni per navigare nel tuo albero.)
git log
ha un intero set di opzioni per visualizzare anche la cronologia dettagliata o di riepilogo.
Non conosco un modo semplice per andare avanti nella cronologia di commit. I progetti con una storia lineare probabilmente non sono poi così comuni. L'idea di una "revisione" come quella che avresti fatto con SVN o CVS non si adatta molto bene a Git.
Utilizzando la chiave SHA1 di un commit, è possibile effettuare le seguenti operazioni:
Innanzitutto, trova il commit desiderato per un file specifico:
git log -n <# commits> <file-name>
Questo, in base al tuo <# commits>
, genererà un elenco di commit per un file specifico.
SUGGERIMENTO: se non sei sicuro di quello che commettere state cercando, un buon modo per scoprire sta utilizzando il seguente comando: git diff <commit-SHA1>..HEAD <file-name>
. Questo comando mostrerà la differenza tra la versione corrente di un commit e una versione precedente di un commit per un file specifico.
NOTA: la chiave SHA1 di un commit è formattata git log -n
nell'elenco di come:
commettere
<SHA1 id>
In secondo luogo, controlla la versione desiderata:
Se hai trovato il commit / la versione che desideri, usa semplicemente il comando: git checkout <desired-SHA1> <file-name>
Ciò inserirà la versione del file specificato nell'area di gestione temporanea. Per estrarlo dall'area di gestione temporanea, utilizzare semplicemente il comando:reset HEAD <file-name>
Per tornare al punto in cui è indicato il repository remoto, utilizzare semplicemente il comando: git checkout HEAD <file-name>
Ero in una situazione in cui abbiamo un ramo master, e poi un altro ramo chiamato 17.0 e all'interno di questa 17.0 c'era un hash di commit senza dire "XYZ" . E al cliente viene data una build fino a quella revisione XYZ. Ora abbiamo riscontrato un bug che deve essere risolto per quel cliente. Quindi dobbiamo creare una filiale separata per quel cliente fino a quando l'hash "xyz". Quindi ecco come l'ho fatto.
Innanzitutto ho creato una cartella con quel nome cliente sul mio computer locale. Supponiamo che il nome del cliente sia "AAA" una volta creata la cartella in questione seguendo il comando all'interno di questa cartella:
Un modo sarebbe quello di creare tutti i commit mai fatti sulle patch. controlla il commit iniziale e quindi applica le patch in ordine dopo la lettura.
usa git format-patch <initial revision>
e poi git checkout <initial revision>
. dovresti ottenere un mucchio di file nel tuo regista che iniziano con quattro cifre che sono le patch.
quando hai finito di leggere la tua revisione, fai semplicemente quello git apply <filename>
che dovrebbe apparire
git apply 0001-*
e contare.
Ma mi chiedo davvero perché non vorresti semplicemente leggere le patch stesse invece? Per favore pubblica questo nei tuoi commenti perché sono curioso.
il manuale di git mi dà anche questo:
git show next~10:Documentation/README
Mostra i contenuti del file Documentation / README come erano correnti nel decimo ultimo commit della succursale successiva.
potresti anche dare un'occhiata a ciò git blame filename
che ti dà un elenco in cui ogni riga è associata a un hash + autore del commit.
Per arrivare a un codice di commit specifico, è necessario il codice hash di quel commit. Puoi ottenere quel codice hash in due modi:
git log
e controlla i tuoi commit recenti su quella filiale. Ti mostrerà il codice hash del tuo commit e il messaggio che hai lasciato durante il commit del tuo codice. Basta copiare e poi faregit checkout commit_hash_code
Dopo esserti spostato su quel codice, se vuoi lavorarci sopra e apportare modifiche, dovresti fare un altro ramo con git checkout -b <new-branch-name>
, altrimenti le modifiche non verranno mantenute.
git log -n1
. Ma segit checkout
non fallito, è uno spreco di sforzi.