Comment afficher l'historique des fichiers dans Git?

133

Avec Subversion, je pourrais utiliser TortoiseSVN pour afficher l'historique / journal d'un fichier.

Comment puis-je faire cela avec Git?

Il suffit de rechercher l'historique d'un fichier particulier, puis de comparer les différentes versions.

mrblah
la source

Réponses:

156

Utilisez git logpour afficher l'historique des validations. Chaque validation a un spécificateur de révision associé qui est une clé de hachage (par exemple 14b8d0982044b0c49f7a855e396206ee65c0e787et b410ad4619d296f9d37f0db3d0ff5b9066838b39). Pour voir la différence entre deux commits différents, utilisez git diffavec les premiers caractères des spécificateurs de révision des deux commits, comme ceci:

# 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

Si vous souhaitez avoir un aperçu de toutes les différences qui se sont produites entre la validation et la validation, utilisez git logou git whatchangedavec l'option 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
Christian
la source
7
Merci pour le conseil -p, c'est super utile pour trouver quelles révisions impliquaient un peu de code.
Christopher Pickslay
100

On dirait que vous voulez git diff et / ou git log . Consultez également gitk

gitk path/to/file
git diff path/to/file
git log path/to/file
baudtack
la source
3
Voici un autre clin d'œil à gitk, qui fournit un excellent moyen de parcourir tous les instantanés d'un seul fichier dans un dépôt git.
Ray Brown
1
Par défaut, gitk affiche le diff plus 10 lignes de contexte, mais que faire si vous voulez voir un instantané du fichier entier? Définissez simplement «Lignes de contexte» sur une valeur élevée (par exemple 100 000). Ensuite, vous pouvez basculer entre les validations et voir le fichier entier à différents moments. (Vous pouvez également effectuer une recherche dans le fichier.)
antinome
35

J'aime utiliser gitk name_of_file

Cela montre une belle liste des modifications apportées à un fichier à chaque validation, au lieu d'afficher les modifications apportées à tous les fichiers. Facilite la recherche de quelque chose qui s'est passé.

Gustavo Litovsky
la source
30

vous pouvez également utiliser tig pour un joli navigateur de référentiel git basé sur ncurses. Pour afficher l'historique d'un fichier:

tig path/to/file
user217433
la source
29

Mon préféré est git log -p <filename>, qui vous donnera un historique de tous les commits du fichier donné ainsi que les diffs pour chaque commit.

hachoir
la source
11

De nombreux navigateurs d'historique Git, y compris git log(et 'git log --graph'), gitk (dans Tcl / Tk, une partie de Git), QGit (dans Qt), tig (interface en mode texte vers git, utilisant ncurses), Giggle (dans GTK +), TortoiseGit et git-cheetah supportent la limitation de chemin (par exemple gitk path/to/file).

Jakub Narębski
la source
@ RobertVuković Je sais que c'est une vieille question ... mais voyez ma réponse ci-dessous!
brianc
4

Bien sûr, si vous voulez quelque chose d'aussi proche que possible de TortoiseSVN, vous pouvez simplement utiliser TortoiseGit .

Jörg W Mittag
la source
Sauf que les extensions du shell TortoiseSvn contiennent une commande pour afficher l'historique d'un seul fichier, contrairement à TortoiseGit.
Neutrino le
3

git log --all -- path/to/file devrait marcher

Edson Medina
la source
Il n'y a pas de lien dans ma réponse @ineersa
Edson Medina
1
Cela devrait être la meilleure réponse. Je n'aime pas utiliser des outils d'
interface graphique
2

TortoiseGit fournit également un outil de ligne de commande pour voir l'historique d'un fichier. Utilisation de PowerShell:

C:\Program` Files\TortoiseGit\bin\TortoiseGitProc.exe /command:log /path:"c:\path\to\your\file.txt"
brianc
la source