2013-06-24 2 views
2

Je voudrais définir un raccourci « diffn git » avec ce comportement:git diff deux séquentiel commet un raccourci?

git diffn := git diff HEAD HEAD~1 
git diffn 1 := git diff HEAD~1 HEAD~2 
git diffn 2 := git diff HEAD~2 HEAD~3 
... 

premier a pas de problème, mais je ne sais pas faire le reste.

Répondre

2

Figu rougis moi-même. J'ai ajouté à ~/.gitconfig cette monstruosité:

[alias] 
dn = "!sh -c 'if [ $# -eq 0 ] ; then git diff HEAD~1 HEAD ; else git diff HEAD~`expr $1 + 1` HEAD~$1 ; fi' -" 

Après cela,

git dn 

œuvres, ainsi que

git dn 1 
git dn 2 
... 
+0

BTW: votre 'HEAD's sont échangés, devrait être:' git diff HEAD ~ HEAD' etc .. Je ai seulement remarqué parce que j'ai fait la même erreur moi-même :) – 13ren

+0

merci de remarquer, @ 13ren, je vais mettre à jour la réponse . –

3

Qu'en est-:

git show - montre la dernière livraison

git show HEAD~1 - montre l'avant-dernier commettras

git show <COMMIT SHA> - vous montre tout commettez

git whatchanged - vous montre que les fichiers modifiés contre le git log

+0

Merci pour ces commandes. Je ne les ai pas utilisés auparavant, mais certains sont utiles. Mais cela ne répond pas à ma question, qui était de faire un simple raccourci. –

+0

Non, c'est exactement ce que vous voulez. Pour faire un alias, mettez 'alias gitdiffn = 'git montrez HEAD ~ $ 1'' dans votre .bashrc, mais je pense que vous avez compris comment en faire une commande git alias – user1158559

+0

alors que git show HEAD ~ 2 me donne l'info que je Je veux, ce n'est pas équivalent à ce que diff git HEAD ~ 2 HEAD ~ 1, puisque j'ai lié git diff à un script qui appelle fusion lorsque $ DISPLAY est disponible et sinon un diff simple. –

0

Étonnamment (pour moi), vous pouvez combiner ~n et ^ syntaxe, donc voici comment je le faisais:

a=1; git diff HEAD^~$a HEAD~$a

Mais il y a une façon plus simple:

a=1; git log -p -1 HEAD~$a;

Je trouve le commettras supplémentaire d'info orientation obligeamment, mais vous pouvez personnaliser cette distance. Note: la page de manuel note des différences mineures entre ce format et celui de diff, ce qui pourrait être important pour la consommation non humaine.

[alias] 
diffn = "!sh -c 'git log -p -1 HEAD~$1' -" 

ne fonctionne pas avec arg omis, donc je suppose un if est nécessaire pour cela.

BTW: discussion similaire trouvé here