2016-05-24 4 views
1

Comment est-ce que je fais ceci? Après avoir fait des changements via git config je peux différencier mes changements mis en scène et commis avec vimdiff mais quand je fais git show je vois encore le diff dans le vieux style simple. Comment puis-je faire ce travail pour git show ainsi?Force git show pour montrer diff en utilisant vimdiff

+0

Copie possible de http://stackoverflow.com/questions/28048270/how-do-i-use-vim-as-git-show-editor – anujm

Répondre

1

Avec git show vous pouvez afficher des objets comme commits (see the man page for reference). Donc, vous ne montrez pas une différence de deux fichiers, mais des changements dans (peut-être plusieurs) fichiers. Donc, il n'y a pas deux fichiers, qui peuvent être comparés. Mais c'est exactement ce que vimdiff fait, il ouvre deux fichiers côte-à-côte et met en évidence les différences.
Lorsque vous utilisez git difftool ou quelque chose comme ça, il va créer des fichiers pour les deux côtés du diff et utiliser l'outil (dans votre cas vimdiff) pour les comparer. git show ne crée pas ces fichiers, donc sa sortie ne peut pas être affichée par vimdiff.

tl; dr: git show est un outil pour afficher des objets git, pas pour créer des différences, donc sa sortie ne peut pas être affichée comme un diff en utilisant vimdiff. Ce que vous pouvez faire est d'utiliser git difftool. Il va ouvrir gvimdiff pour chaque fichier modifié.
Vous pouvez utiliser les options habituelles de git diff pour comparer différentes validations.

1

La valeur par défaut git show sans paramètre ainsi que git show <object> affiche tous les fichiers d'une validation. Puisque vimdiff ne peut comparer qu'un seul fichier à la fois, vous ne pouvez pas l'utiliser avec ces options.

Toutefois git show <object> -- <file> affiche les modifications apportées à un seul fichier dans une validation. Vous pouvez afficher les changements dans vimdiff en exécutant difftool à la place:

git difftool SHA~:SHA -- <file> 

Si vous avez besoin d'une plus grande flexibilité, vous pouvez toujours utiliser git show chercher des versions spécifiques d'un fichier et les passer dans vimdiff via Process Substituion

export FILE=path/to/file; vimdiff <(git show SHA1:$FILE) <(git show SHA2:$FILE) 
0

Essayez d'utiliser des alias git. Ceci est pour git show

git config --global alias.s difftool\ HEAD^\ HEAD 

Et ceci est pour git show <revision>

git config --global alias.s '!f() { rev=${1-HEAD}; git difftool $rev^ $rev; }; f' 

Pour voir comment cela fonctionne, se familiariser avec this page.