Comment puis-je différencier un fichier, disons pom.xml
, de la branche principale vers une ancienne version arbitraire dans Git?
324
Tu peux faire:
git diff master~20:pom.xml pom.xml
... pour comparer votre courant pom.xml
à celui d'il y a master
20 révisions par le premier parent. Vous pouvez master~20
, bien sûr, remplacer le nom d'objet (SHA1sum) d'une validation ou l'une des nombreuses autres façons de spécifier une révision .
Notez qu'il s'agit en fait de comparer l'ancienne pom.xml
à la version de votre arborescence de travail, et non la version validée dans master
. Si vous le souhaitez, vous pouvez effectuer les opérations suivantes à la place:
git diff master~20:pom.xml master:pom.xml
git diff <revision>:foo/ HEAD:foo/
.Par exemple:
la source
git diff <revision> root/path/file
.Si vous voulez voir la différence entre le dernier commit d'un seul fichier, vous pouvez le faire:
Cela vous donnera la différence du fichier dans git, ne compare pas votre fichier local.
la source
-1
étape par étape jusqu'à ce que vous obteniez les modifications.gitlog () { git log -${3:-p} -${2:-1} $1; }
utilisée comme:gitlog Rakefile
ougitlog Rakefile 5
etgitlog Rakefile 10 s
. Le premier montre un diff; le second montre cinq diffs; le troisième en montre dix--no-patch
.Pour voir ce qui a été changé dans un fichier lors du dernier commit:
Vous pouvez changer le nombre (~ 1) au n-ème commit avec lequel vous souhaitez faire la différence.
la source
HEAD~1
est substitué<revision>
, ce qui fait de cette réponse un doublon.Syntaxe générique:
pour tous les fichiers nommés "FileName.xml" n'importe où dans votre référentiel.
Notez l'espace entre "-" et "**"
Répondez à votre question:
comme toujours avec git, vous pouvez utiliser une balise / sha1 / "HEAD ^" pour identifier un commit.
Testé avec git 1.9.1 sur Ubuntu.
la source
Si aucun commit n'est votre HEAD, l' expansion de l'accolade de bash s'avère vraiment utile, surtout si vos noms de fichiers sont longs, l'exemple ci-dessus:
Deviendrait
En savoir plus sur l' expansion de Brace avec bash.
la source
Pour comparer à 5, validez avec l'actuel, les deux activés
master
, faites simplement:Vous pouvez également vous référer au numéro de hachage de validation, par exemple si le numéro de hachage est
x110bd64
, vous pouvez faire quelque chose comme ça pour voir la différence:la source
git diff -w HEAD origin / master path / to / file
la source
Fonctionne si vous n'êtes pas trop dans la branche principale.
la source
Si vous êtes d'accord avec un outil graphique (ou même le préférez), vous pouvez:
Dans gitk, vous pouvez ensuite cliquer sur n'importe quel commit (pour le "sélectionner") et cliquer avec le bouton droit sur n'importe quel autre commit pour sélectionner "Diff this -> selected" ou "Diff selected -> this" dans le menu contextuel, selon l'ordre que vous préférez.
la source
Pour les personnes intéressées à faire de même depuis GitHub, voir comparer les validations dans le temps .
la source
Si vous avez besoin de diff sur un seul fichier dans une cachette par exemple, vous pouvez le faire
la source
Si vous recherchez le diff sur un commit spécifique et que vous souhaitez utiliser l'interface utilisateur de github au lieu de la ligne de commande (par exemple, vous voulez le lier à d'autres personnes), vous pouvez faire:
Par exemple:
https://github.com/grails/grails-core/commit/02942c5b4d832b856fbc04c186f1d02416895a7e/grails-test-suite-uber/build.gradle
Notez les liens Précédent et Suivant en haut à droite qui vous permettent de parcourir tous les fichiers du commit.
Cela ne fonctionne que pour un commit spécifique, pas pour comparer entre deux versions arbitraires.
la source