En utilisant Git, comment pouvez-vous trouver la différence entre la version actuelle et la dernière?
git diff last version:HEAD
En utilisant Git, comment pouvez-vous trouver la différence entre la version actuelle et la dernière?
git diff last version:HEAD
Réponses:
Je ne comprends pas vraiment le sens de "dernière version".
Comme le commit précédent est accessible avec HEAD ^, je pense que vous cherchez quelque chose comme:
git diff HEAD^ HEAD
Depuis Git 1.8.5, @
est un alias pour HEAD
, vous pouvez donc utiliser:
git diff @~..@
Les éléments suivants fonctionneront également:
git show
Si vous voulez connaître la différence 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 par défaut, vous pouvez l'omettre (comme indiqué par Orient ):
git diff @^
git diff HEAD^
git diff commit_id
~
caractère doit être utilisé à la place de ^
.@
est un alias pour HEAD
. Et puisque ~
et ^
sont les mêmes lorsque l'on ne revient qu'à un seul commit, je trouve git diff @~..@
beaucoup plus facile à taper.
git show
est encore plus facile, car @~..@
c'est la chose par défaut à afficher.
git show
imprime simplement le message de validation, il ne génère pas de différence des modifications spécifiques, au moins dans Git 2.5.4 (Apple Git-61), ce ne serait donc pas une réponse à la question de l'OP.
git show
est que si HEAD
est un commit de fusion, vous n'obtiendrez pas ce que vous attendez car le commit de fusion lui-même peut ne pas avoir de changements lui-même. git diff HEAD^ HEAD
montrera les changements réels entre les versions
En supposant que «version actuelle» est le répertoire de travail (modifications non validées) et «dernière version» est HEAD
(dernières modifications validées pour la branche actuelle), faites simplement
git diff HEAD
Le crédit pour ce qui suit va à l'utilisateur Cerran
.
Et si vous sautez toujours la zone de transit -a
lorsque vous vous engagez, vous pouvez simplement utiliser git diff
.
Sommaire
git diff
affiche les modifications non mises en scène.git diff --cached
montre les changements par étapes.git diff HEAD
affiche toutes les modifications (échelonnées et non échelonnées).Source: git-diff (1) Page du manuel - Cerran
-a
lorsque vous vous engagez, vous pouvez simplement utiliser git diff
. <1> git diff
affiche les modifications non mises en scène . <2> git diff --cached
montre les changements par étapes . <3> git diff HEAD
affiche toutes les modifications (échelonnées et non échelonnées). Source: git-diff (1) Page du manuel
Comme indiqué sur un commentaire par amalloy , si par "versions actuelles et dernières" vous voulez dire le dernier commit et le commit avant cela, vous pouvez simplement utiliser
git show
git show HEAD~1
pour afficher la dernière validation, et git show HEAD~2
, etc. pour les anciennes validations . Afficher un seul fichier via git show HEAD~2 my_file
.
Différence entre le dernier mais un commit et le dernier commit (plus l'état actuel, le cas échéant):
git diff HEAD~
ou même (plus facile à taper)
git diff @~
où @
est le synonim HEAD
de la branche courante et ~
signifie "donnez-moi le parent de la révision mentionnée".
git diff HEAD^
(plutôt que la HEAD~
forme équivalente ). C'est un peu plus facile à retenir pour un "vieux con" comme moi ;-)
~
que @
signifient et signifient.
diff HEAD^ HEAD
devrait vraiment l' être git diff @^!
. Voir git-scm.com/docs/gitrevisions pourr1^!
Utilisez simplement le cached
drapeau si vous avez ajouté, mais ne vous êtes pas encore engagé:
git diff --cached --color
Tout d'abord, utilisez " git log
" pour répertorier les journaux du référentiel.
Maintenant, sélectionnez les deux ID de validation, relatifs aux deux validations. Vous voulez voir les différences ( exemple - Top commit le plus et certains commit plus ancien (selon votre attente de la version actuelle et une ancienne version) ).
Ensuite, utilisez:
git diff <commit_id1> <commit_id2>
ou
git difftool <commit_id1> <commit_id2>
Si la validation supérieure est pointée par HEAD, vous pouvez faire quelque chose comme ceci:
commit1 -> HEAD
commit2 -> HEAD~1
commit3 -> HEAD~2
Différence entre le premier et le deuxième commit:
git diff HEAD~1 HEAD
Différence entre le premier et le troisième commit:
git diff HEAD~2 HEAD
Différence entre le deuxième et le troisième commit:
git diff HEAD~2 HEAD~1
Etc...
J'utilise Bitbucket avec l' IDE Eclipse avec le plugin Eclipse EGit installé.
Je compare un fichier de n'importe quelle version de son histoire (comme SVN ).
Menu Explorateur de projets → Fichier → clic droit → Équipe → Afficher dans l'historique .
Cela apportera l'historique de toutes les modifications sur ce fichier. Maintenant, Ctrlcliquez sur et sélectionnez deux versions → "Comparer les unes aux autres" .
Cela fonctionnera également pour les balises (supprimez le 'uniq' ci-dessous et d'autres parties si vous avez besoin de voir toutes les modifications):
git diff v1.58 HEAD
Ce qui suit est le même, et cela pourrait être utile pour l'intégration continue (CI) pour les microservices dans un référentiel monolithique:
git diff v1.58 HEAD --name-only | sort -u | awk 'BEGIN {FS="/"} {print $1}' | uniq
<Folder Name>
(Crédit - https://dzone.com/articles/build-test-and-deploy-apps-independently-from-a-mo )