2009-08-20 5 views
17

Comment pouvez-vous montrer les différences d'un fichier dans les 5 dernières validations dans le fichier actuel non-validé par Git-show?Comparaison des changements dans les validations au fichier en cours par Git

J'ai apporté une modification à mon fichier qui casse mon code. Cependant, je ne sais pas où le changement est.

Je voudrais comparer les fichiers actuels non validés au commit récent (HEAD), au commit précédent (^ HEAD) et au moins 3 commits plus profonds.

Cependant, je ne sais pas comment vous pouvez le faire efficacement.

En essayant de voir les changements des cinq derniers commits d'un fichier dans le fichier en cours dans la branche donnée, j'ai couru sans succès

git show next~5:handle_questions.php 

Répondre

38

Voici mon cheat-sheet:

# uncommited file to HEAD 
git diff <path> 

# uncommited file to before last commit 
git diff HEAD^ -- <path> 

#last commit to before last commit 
git diff HEAD^ HEAD -- <path> 

#difference between HEAD and n-th grandparent 
git diff HEAD~n HEAD -- <path> 

#Another cool feature is whatchanged command 
git whatchanged -- <path> 
+0

Comment feriez-vous un fichier non engagé contre un chemin de fichier différent de la dernière validation? – Maslow

+0

Je ne pense pas que ce soit possible. Description de git diff: "Afficher les changements entre l'arbre de travail et l'index ou un arbre, les changements entre l'index et un arbre, les changements entre deux arbres, ou les changements entre deux fichiers sur le disque." –

3

Vous pouvez utiliser git bisect pour traquer la validation qui a introduit une punaise.

3

Pour voir la diff entre handle_questions.php dans le répertoire de travail et dans le référentiel 5 engage dos, utilisez:

 
$ git diff HEAD~5 handle_questions.php 
2

Si vous connaissez le fichier dans lequel la modification a été faite, vous pouvez également utiliser git blame <path> - cela vous donnera l'historique de chaque ligne de code dans le format suivant:

SHA (Author Timestamp Line Number) code 
+0

C'est une super commande! Merci de l'avoir partagé. –

Questions connexes