web-dev-qa-db-fra.com

Trouver un diff entre la version actuelle et la dernière?

Avec Git, comment pouvez-vous trouver la différence entre la version actuelle et la dernière?

git diff last version:HEAD
546
Rajeev

Je ne comprends pas vraiment le sens de "dernière version".

Comme le commit précédent peut être consulté avec HEAD ^, je pense que vous recherchez quelque chose comme:

git diff HEAD^ HEAD

À partir de Git 1.8.5, @ est un alias pour HEAD. Vous pouvez donc utiliser:

git diff @~..@

Ce qui suit fonctionnera également:

git show

Si vous voulez connaître le diff entre head et n'importe quel commit, vous pouvez utiliser:

git diff commit_id HEAD

Et cela lancera votre outil de diff visuel (s'il est configuré):

git difftool HEAD^ HEAD

Étant donné que la comparaison avec HEAD est la valeur par défaut, vous pouvez l'omettre (comme indiqué par Orient ):

git diff @^
git diff HEAD^
git diff commit_id

Avertissements

  • @ScottF et @Panzercrisis expliquent dans les commentaires que sous Windows, le caractère ~ doit être utilisé à la place de ^.
969
Francisco Puga

En supposant que "version actuelle" est le répertoire de travail (modifications non validées) et que "dernière version" est HEAD (dernières modifications validées pour la branche actuelle), il suffit de faire

git diff HEAD

le crédit pour suivre va à l'utilisateur Cerran

Et si vous ignorez toujours la zone intermédiaire avec -a lorsque vous validez, vous pouvez simplement utiliser git diff

Résumé

  1. git diff affiche les modifications non mises en scène. 
  2. git diff --cached montre les changements mis en scène. 
  3. git diff HEAD affiche tous les changements (à la fois staged et unstaged). 

Source: git-diff (1) Page de manuel - Cerran

134
CharlesB

Comme indiqué dans comment par amalloy , si vous entendez par "versions actuelles et précédentes" le dernier commit et le commit précédent, vous pouvez simplement utiliser

git show
97
Nighto

Différence entre l'avant-dernier commit et le dernier commit (plus l'état actuel, le cas échéant):

git diff HEAD~

ou même (plus facile à taper)

git diff @~

@ est le synonyme de HEAD de la branche actuelle et ~ signifie "donnez-moi le parent de la révision mentionnée".

49
Orient

Vous pouvez le faire aussi:

Comparer avec le commit précédent

git diff --name-status HEAD~1..HEAD

Comparer avec les deux commits actuels et précédents

git diff --name-status HEAD~2..HEAD
48
naoko

Utilisez simplement l'indicateur cached si vous avez ajouté, mais n'avez pas encore validé:

git diff --cached --color
14
Andy

Rapide et simple, si vous êtes dans le master: 

    git diff (checkout_id):file.txt file.txt

Exemple:

    git diff asdfioei91819280din198:file.txt file.txt
5
Bryan

Tout d’abord, utilisez "git log" pour répertorier les journaux sur le référentiel.

Maintenant, sélectionnez les deux ID de validation correspondant aux deux commits, vous voulez voir les différences ( Exemple - Commit le plus haut et un peu plus ancien [selon vos attentes concernant la version actuelle et une ancienne ]).

Ensuite, utilisez:

git diff <commit_id1> <commit_id2>

ou

git difftool <commit_id1> <commit_id2>
4
parasrish

J'utilise bitbucket avec Eclipse IDE avec le plugin Eclipse EGit installé . Je compare un fichier à partir de n’importe quelle version de son historique (comme SVN). 

Explorateur de projets> Fichier clic droit> Équipe> Afficher dans l'historique

Ceci apportera l’historique de toutes les modifications sur ce fichier . Maintenant, maintenez la touche CTRL enfoncée et sélectionnez deux versions> "Comparer les unes avec les autres"

1
Mandrake

Cela fonctionnera également pour les balises . (Supprimez le "uniq" ci-dessous et les autres parties si vous avez besoin de voir toutes les modifications)

 git diff v1.58 HEAD 

Ci-dessous, le même, qui pourrait être utile pour CI pour les microservices dans monorepo

git diff v1.58 HEAD  --name-only | sort -u | awk 'BEGIN {FS="/"} {print $1}' | uniq
<Folder Name> 

(credit - https://dzone.com/articles/build-test-and-deploy-apps-independently-from-a-mo )

1
Alex Punnen

Si la validation en haut est indiquée par HEAD, vous pouvez faire quelque chose comme ceci:

commit1 -> HEAD
commit2 -> HEAD~1
commit3 -> HEAD~2

Diff entre le 1er et le 2e commit:

git diff HEAD~1 HEAD

Diff entre le 1er et le 3ème commit:

git diff HEAD~2 HEAD

Diff entre 2ème et 3ème commit:

git diff HEAD~2 HEAD~1

etc...

0
bit_cracker007