Mis à part l'écriture d'un alias ou d'un script, existe-t-il une commande plus courte pour obtenir le diff pour un commit particulier?
git diff 15dc8^..15dc8
Si vous ne donnez qu'un seul ID de validation git diff 15dc8
, il diffère cette validation contre HEAD.
Réponses:
Utilisez
git show $COMMIT
. Il vous montrera le message du journal de la validation et la différence de cette validation particulière.la source
Utilisation:
comme décrit dans le fragment de page de manuel git-rev-parse (1) suivant (ou dans la page de manuel git gitrevisions (7) moderne ):
Cela signifie que vous pouvez utiliser
15dc8^!
comme raccourci pour15dc8^..15dc8
n'importe où dans git où des révisions sont nécessaires. Pour la commande diff, lagit diff 15dc8^..15dc8
est comprise commegit diff 15dc8^ 15dc8
, ce qui signifie la différence entre le parent de commit (15dc8^
) et commit (15dc8
).Remarque : la description dans la
git-rev-parse(1)
page de manuel parle des plages de révision , où elle doit également fonctionner pour les validations de fusion, avec plus d'un parent. Ensuiter1^!
est «r1 --not r1^@
» ie «r1 ^r1^1 ^r1^2 ...
»En outre, vous pouvez utiliser
git show COMMIT
pour obtenir la description du commit et le diff pour un commit. Si vous ne voulez que diff, vous pouvez utilisergit diff-tree -p COMMIT
la source
^!
notation abrégée parent fonctionne correctement avec difftool pour les validations normales, mais la différence est inversée pour les validations de fusion. PourquoiSi vous savez à quelle distance, vous pouvez essayer quelque chose comme:
Les validations antérieures fonctionnent comme ceci:
Il existe de nombreuses façons de spécifier des validations:
Voir cette page pour plus de détails .
la source
Comme le souligne @mipadi, vous pouvez l'utiliser
git show $COMMIT
, mais cela montre également certains en-têtes et le message de validation. Si vous voulez un diff droit, utilisezgit show --pretty=format:%b $COMMIT
.Ce n'est évidemment pas une main très courte, donc je garde cet alias dans mon .gitconfig
Cela me permet d'utiliser
git sd $COMMIT
pour afficher diff .la source
La plupart des exemples mentionnés (par exemple
git diff 15dc8^!
, ougit diff 15dc8^..15dc8
) ne fonctionnent pas si vous utilisez zsh et que l'extendedglob
option est définie. Vous pouvez le corriger de l'une des trois manières suivantes:unsetopt extendedglob
(et / ou supprimez-le de .zshrc)setopt NO_NOMATCH
(et / ou définissez-le dans .zshrc)échapper au curseur et frapper à chaque fois avec une barre oblique inverse, par exemple
git diff 15dc8\^\!
la source
~ 1 signifie «parent», ~ 2 «grand-parent, etc.
la source
La solution de Paul ci-dessus a fait ce que j'espérais.
En outre, il est utile d'ajouter des alias comme les tables de cuisson mentionnées, si vous mettez ce qui suit dans la section [alias] de votre fichier ~ / .gitconfig, vous pouvez utiliser une raccourci pour afficher les différences entre la tête et la précédente.
Ensuite, exécuter $ git diff-last vous donnera votre résultat. Notez que cela aussi inclure les modifications que vous ne l' avez pas encore engagés, ainsi que la diff entre commits. Si vous souhaitez ignorer les modifications que vous n'avez pas encore validées, vous pouvez utiliser diff pour comparer directement le HEAD avec son parent:
la source
Utilise des alias, donc ne répond pas exactement à votre question mais je les trouve utiles pour faire ce que vous avez l'intention ...
la source