Domanda Visualizza la cronologia delle modifiche di un file utilizzando la versione di Git
Come posso visualizzare la cronologia delle modifiche di un singolo file in Git, completare i dettagli con cosa è cambiato?
Ho ottenuto fino a:
git log -- [filename]
che mi mostra la cronologia di commit del file, ma come ottengo il contenuto di ciascuna modifica del file?
Sto provando a fare la transizione da MS SourceSafe e quello era un semplice right-click
→ show history
.
2501
2017-11-10 15:42
origine
risposte:
Per questo vorrei usare:
gitk [filename]
o per seguire i nomi dei nomi precedenti
gitk --follow [filename]
1947
2017-08-24 12:05
Puoi usare
git log -p filename
lasciare che git generi le patch per ogni voce di log.
Vedere
git help log
per più opzioni - può effettivamente fare un sacco di cose belle :) Per ottenere solo il diff per un impegno specifico puoi
git show HEAD
o qualsiasi altra revisione per identificatore. O usare
gitk
per visualizzare visivamente le modifiche.
1831
2017-11-10 15:56
git log --follow -p -- file
Questo mostrerà il intero cronologia del file (inclusa la cronologia oltre la rinomina e con le differenze per ogni modifica).
In altre parole, se il nome del file bar
era una volta chiamato foo
, poi git log -p bar
(senza il --follow
opzione) mostrerà solo la cronologia del file fino al punto in cui è stata rinominata - non mostrerà la cronologia del file quando era noto come foo
. utilizzando git log --follow -p bar
mostrerà l'intera cronologia del file, incluse eventuali modifiche al file quando era noto foo
. Il -p
l'opzione assicura che le differenze siano incluse per ogni cambiamento.
1183
2018-03-30 23:25
Se preferisci rimanere basato sul testo, potresti volerlo usare tig.
Installazione rapida:
- apt-get:
# apt-get install tig
- Homebrew (OS X):
$ brew install tig
Usalo per visualizzare la cronologia su un singolo file: tig [filename]
Oppure consulta la cronologia dettagliata dei pronti contro termine: tig
Simile a gitk
ma basato sul testo. Supporta i colori nel terminale!
146
2018-06-07 10:23
git whatchanged -p filename
è anche equivalente a git log -p filename
in questo caso.
Puoi anche vedere quando una linea di codice specifica all'interno di un file è stata cambiata con git blame filename
. Questo stamperà un breve ID di commit, l'autore, il timestamp e la linea completa di codice per ogni riga nel file.
Questo è molto utile dopo aver trovato un bug e vuoi sapere quando è stato introdotto (o chi è stato colpa sua).
101
2017-11-11 06:12
Utenti SourceTree
Se usi SourceTree per visualizzare il tuo repository (è gratuito e abbastanza buono) puoi fare clic con il tasto destro su un file e selezionare Registro selezionato

Il display (sotto) è molto più amichevole di gitk e la maggior parte delle altre opzioni elencate. Sfortunatamente (al momento) non esiste un modo semplice per avviare questa vista dalla riga di comando: la CLI di SourceTree attualmente apre solo repository.

91
2017-07-30 18:55
Per mostrare quale revisione e autore hanno modificato per ultimo ogni riga di un file:
git blame filename
o se si desidera utilizzare la potente interfaccia grafica con la colpa:
git gui blame filename
56
2017-08-11 13:01
Riepilogo delle altre risposte dopo aver letto e giocato un po ':
Il solito comando da linea di comando sarebbe
git log --follow --all -p dir/file.c
Ma puoi anche usare gitk (gui) o tig (text-ui) per dare molti più modi leggibili dall'uomo di guardarlo.
gitk --follow --all -p dir/file.c
tig --follow --all -p dir/file.c
Sotto debian / ubuntu, il comando install per questi strumenti adorabili è come previsto:
sudo apt-get install gitk tig
E sto attualmente usando:
alias gdf='gitk --follow --all -p'
in modo che io possa semplicemente digitare gdf dir
per ottenere una storia focalizzata di tutto nella sottodirectory dir
.
39
2017-12-05 18:38
Aggiungi questo alias al tuo .gitconfig:
[alias]
lg = log --all --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\n--abbrev-commit --date=relative
E usa il comando in questo modo:
> git lg
> git lg -- filename
L'output apparirà quasi esattamente uguale all'uscita gitk. Godere.
22
2018-06-26 20:12
scrissi git-riproduzione per questo scopo esatto
pip install git-playback
git playback [filename]
Questo ha il vantaggio di visualizzare entrambi i risultati nella riga di comando (come git log -p
) mentre ti permetto anche di passare attraverso ogni commit usando i tasti freccia (come gitk
).
13
2017-11-19 06:25