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.

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

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

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é.


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

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.


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).


@ 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 .


Sauf que les extensions du shell TortoiseSvn contiennent une commande pour afficher l'historique d'un seul fichier, contrairement à TortoiseGit.
Neutrino le



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"
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.