Come visualizzare la cronologia dei file in Git?


133

Con Subversion ho potuto usare TortoiseSVN per visualizzare la cronologia / registro di un file.

Come posso farlo con Git?

Sto solo cercando il record della cronologia per un determinato file e quindi la possibilità di confrontare le diverse versioni.

Risposte:


156

Utilizzare git logper visualizzare la cronologia di commit. Ogni commit ha un identificatore di revisione associato che è una chiave hash (ad es. 14b8d0982044b0c49f7a855e396206ee65c0e787E b410ad4619d296f9d37f0db3d0ff5b9066838b39). Per visualizzare la differenza tra due diversi commit, utilizzare git diffcon i primi caratteri degli identificatori di revisione di entrambi i commit, in questo modo:

# diff between commits 14b8... and b410...
git diff 14b8..b410
# only include diff of specified files
git diff 14b8..b410 path/to/file/a path/to/file/b

Se vuoi avere una panoramica di tutte le differenze che si sono verificate da commit a commit, usa git logo git whatchangedcon l'opzione patch:

# include patch displays in the commit history
git log -p
git whatchanged -p
# only get history of those commits that touch specified paths
git log path/a path/b
git whatchanged path/c path/d

7
Grazie per il suggerimento -p, è molto utile per scoprire quali revisioni comportano un po 'di codice.
Christopher Pickslay,

100

Sembra che tu voglia git diff e / o git log . Dai un'occhiata anche a gitk

gitk path/to/file
git diff path/to/file
git log path/to/file

3
Ecco un altro cenno per gitk, che fornisce un ottimo modo per sfogliare tutte le istantanee di un singolo file in un repository git.
Ray Brown,

1
Di default gitk mostra il diff più 10 righe di contesto, ma cosa succede se si desidera vedere un'istantanea dell'intero file? Basta impostare "Linee di contesto" su un valore elevato (ad es. 100000). Quindi è possibile alternare tra commit e vedere l'intero file in diversi punti nel tempo. (Puoi anche cercare nel file.)
antinome

35

Mi piace usare gitk name_of_file

Questo mostra un bel elenco delle modifiche apportate a un file ad ogni commit, invece di mostrare le modifiche a tutti i file. Rende più facile rintracciare qualcosa che è successo.


30

potresti anche usare tig per un bel browser repository git basato su ncurses. Per visualizzare la cronologia di un file:

tig path/to/file

29

Il mio preferito è git log -p <filename>, che ti fornirà una cronologia di tutti i commit del file dato e le differenze per ogni commit.


11

Molti browser della cronologia di Git, tra cui git log(e 'git log --graph'), gitk (in Tcl / Tk, parte di Git), QGit (in Qt), tig (interfaccia in modalità testo per git, usando ncurses), Giggle (in GTK +), TortoiseGit e git-cheetah supportano la limitazione del percorso (es gitk path/to/file.).


@ RobertVuković So che questa è una vecchia domanda ... ma vedi la mia risposta qui sotto!
brianc

4

Naturalmente, se vuoi qualcosa il più vicino possibile a TortoiseSVN, puoi semplicemente usare TortoiseGit .


Tranne che le estensioni della shell TortoiseSvn contengono un comando per mostrare la cronologia di un singolo file, mentre TortoiseGit no.
Neutrino,

3

git log --all -- path/to/file dovrebbe funzionare


Non c'è nessun link nella mia risposta @ineersa
Edson Medina,

1
Questa dovrebbe essere la risposta migliore. Non mi piace usare strumenti gui
schifosi


2

TortoiseGit fornisce anche uno strumento da riga di comando per vedere la cronologia di un file. Utilizzando PowerShell:

C:\Program` Files\TortoiseGit\bin\TortoiseGitProc.exe /command:log /path:"c:\path\to\your\file.txt"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.