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
Répondre
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.
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)
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.
Copie possible de http://stackoverflow.com/questions/28048270/how-do-i-use-vim-as-git-show-editor – anujm