Comment puis-je afficher les modifications qui ont été mises en scène?

J’ai mis en scène quelques changements à faire. Comment puis-je voir le diff de tous les fichiers qui sont mis en scène pour le prochain commit? Je suis au courant de l’ état de git , mais j’aimerais voir les diffs réels – pas seulement les noms des fichiers qui sont mis en scène.

J’ai vu que la page de manuel de git-diff (1)

git diff [–options] [-] […]

Ce formulaire permet d’afficher les modifications apscopes par rapport à l’index (zone de transfert pour la prochaine validation). En d’autres termes, les différences sont ce que vous pourriez dire à git d’append à l’index, mais vous ne l’avez toujours pas. Vous pouvez organiser ces modifications en utilisant git-add (1).

Malheureusement, je ne peux pas vraiment comprendre cela. Il doit y avoir un one-liner pratique pour lequel je pourrais créer un alias, non?

    Ce devrait juste être:

     git diff --cached 

    --cached signifie afficher les changements dans le cache / index (c.-à-d. les changements par étapes) par rapport au HEAD actuel. --staged est un synonyme de --cached .

    --staged et --cached ne --cached pas HEAD , juste la différence par rapport à HEAD . Si vous choisissez ce que vous voulez faire en utilisant git add --patch (ou git add -p ), --staged renverra ce qui est mis en scène.

    Un simple graphique rend cela plus clair:

    Simple Git diffs

    git diff

    Affiche les modifications entre le répertoire de travail et l’index. Cela montre ce qui a été changé, mais n’est pas organisé pour un commit.

    git diff –cached

    Affiche les changements entre l’index et le HEAD (qui est le dernier commit sur cette twig). Cela montre ce qui a été ajouté à l’index et mis en scène pour un commit.

    git diff tête

    Affiche tous les changements entre le répertoire de travail et HEAD (qui inclut les modifications de l’index). Cela montre toutes les modifications depuis la dernière validation, qu’elles aient ou non été mises en scène pour une validation.

    Aussi :

    Il y a un peu plus de détails sur 365Git.

    Si vous êtes intéressé par une vue visuelle côte à côte, l’outil de diff visif visuel peut le faire. Il affichera même trois volets si certains, mais pas tous, sont mis en scène. En cas de conflit, il y aura même quatre volets.

    Capture d'écran de diffuse avec mises en scène et mises en scène non mises en scène

    L’invoque avec

     diffuse -m 

    dans votre copie de travail Git.

    Si vous me le demandez, le meilleur visuel que j’ai vu depuis une décennie. En outre, il n’est pas spécifique à Git: il interagit avec une pléthore d’autres VCS, y compris SVN, Mercurial, Bazaar, …

    Voir aussi: Afficher à la fois l’arbre mis en scène et l’arbre de travail dans git diff?

    Notez que git status -v montre également les modifications par étapes! (ce qui signifie que vous devez avoir mis en place – git add – quelques modifications. Pas de changement par étapes, pas de diff avec git status -v .
    Cela fait depuis Git 1.2.0, février 2006 )

    Dans sa forme longue (par défaut), git status a une option non documentée “verbose” qui affiche réellement le diff entre HEAD et index.

    Et il est sur le sharepoint devenir encore plus complet: voir ” Afficher à la fois l’arbre mis en scène et l’arbre de travail dans git diff? ” (Git 2.3.4+, Q2 2015):

     git status -v -v 

    Vous pouvez utiliser cette commande.

     git diff --cached --name-only 

    L’option --cached de git diff signifie que vous obtenez des fichiers en mode --name-only , et l’option --name-only signifie que vous ne --name-only obtenir que les noms des fichiers.

    A partir de la version 1.7 et ultérieure, il devrait être:

     git diff --staged 

    UTILISATION D’UN OUTIL DIFF VISUEL

    La réponse par défaut (sur la ligne de commande)

    Les réponses les plus fréquentes ici indiquent comment afficher les modifications mises en cache / par étapes dans l’ Index :

     $ git diff --cached 

    ou $ git diff --staged qui est un alias.

    Lancer l’outil Visual Diff à la place

    La réponse par défaut crachera les modifications de diff au niveau de git bash (c’est-à-dire sur la ligne de commande ou dans la console). Pour ceux qui préfèrent une représentation visuelle des différences de fichiers par étapes, il existe un script disponible dans git qui lance un outil de diff visuel pour chaque fichier visualisé au lieu de les afficher sur la ligne de commande, appelée difftool :

     $ git difftool --staged 

    Cela fera la même chose que git diff --staged , sauf que chaque fois que l’outil diff est lancé (c’est-à-dire chaque fois qu’un fichier est traité par diff), il lancera l’outil de diff visuel par défaut (dans mon environnement, kdiff3 ) .

    Après le lancement de l’outil, le script git diff sera mis en pause jusqu’à ce que votre outil de diff visuel soit fermé. Par conséquent, vous devrez fermer chaque fichier pour voir le suivant.

    Vous pouvez toujours utiliser difftool à la place de diff dans les commandes git

    Pour tous vos besoins visuels, git difftool remplacera toutes les commandes git diff , y compris toutes les options.

    Par exemple, pour lancer l’outil Visual diff sans demander si vous devez le faire pour chaque fichier, ajoutez l’option -y (je pense que vous en aurez généralement besoin !!):

     $ git difftool -y --staged 

    Dans ce cas, il récupérera chaque fichier dans l’outil de comparaison visuelle, un à la fois, pour afficher le suivant après la fermeture de l’outil.

    Ou regarder le diff d’un fichier particulier mis en scène dans l’ Index :

     $ git difftool -y --staged < > 

    Pour toutes les options, voir la page de manuel:

     $ git difftool --help 

    Configuration de Visual Git Tool

    Pour utiliser un outil visuel autre que celui par défaut, utilisez l’option -t :

     $ git difftool -t  < > 

    Ou, consultez la page de manuel difftool pour savoir comment configurer git pour utiliser un autre outil de diff par défaut.

    Si vous avez plusieurs fichiers avec des modifications par étapes, il peut être plus pratique d’utiliser git add -i , puis sélectionnez 6: diff , et enfin, choisissez le ou les fichiers qui vous intéressent.

    Si vos intentions sont de repousser une twig repo distante et que votre premier passage à un journal de modifications de validation est incomplet, vous pouvez corriger la déclaration de validation avant de continuer ainsi.

    Localement

    … faire des changements …

     git diff # look at unstaged changes git commit -am"partial description of changes" 

    … rappelle plus de changements non mentionnés dans commit …

    git diff origine / master # regarde les mises en scène mais pas les changements

    … modifier la déclaration de mise en scène par étapes …

     git commit --amend -m"i missed mentioning these changes ...." git push 

    Pour la comparaison entre la zone de stockage et le référentiel

     $git diff --staged 

    Pour une comparaison entre travail et référentiel

     $ git diff 

    mais si un fichier est modifié et ajouté à la zone $ git add fileName ( $ git add fileName ) et que nous essayons de voir la différence avec ( $ git diff ). Il ne renverra aucune différence puisque le fichier se trouve dans la zone de transit et qu’il ne sera pas comparé au référentiel.

    Par défaut, git diff est utilisé pour afficher les modifications qui ne sont pas ajoutées à la liste des fichiers mis à jour par git. Mais si vous voulez montrer les modifications qui sont ajoutées ou décalées, vous devez fournir des options supplémentaires qui vous permettront de savoir que vous êtes intéressé par les fichiers décalés ou ajoutés.

     $ git diff # Default Use $ git diff --cached # Can be used to show difference after adding the files $ git diff --staged # Same as 'git diff --cached' mostly used with latest version of git 

    Exemple

     $ git diff diff --git a/x/y/z.js b/x/y/z.js index 98fc22b..0359d84 100644 --- a/x/y/z.js +++ b/x/y/z.js @@ -43,7 +43,7 @@ var a = function (tooltip) { - if (a) + if (typeof a !== 'undefined') res = 1; else res = 2; $ git add x/y/z.js $ git diff $ 

    Une fois les fichiers ajoutés, vous ne pouvez pas utiliser la valeur par défaut de «git diff». Vous devez faire comme ceci: –

     $ git diff --cached diff --git a/x/y/z.js b/x/y/z.js index 98fc22b..0359d84 100644 --- a/x/y/z.js +++ b/x/y/z.js @@ -43,7 +43,7 @@ var a = function (tooltip) { - if (a) + if (typeof a !== 'undefined') res = 1; else res = 2; 

    git gui et git-cola sont des utilitaires graphiques qui vous permettent de visualiser et de manipuler l’index. Les deux incluent des diffs visuels simples pour les fichiers mis en scène, et git-cola peut également lancer un outil de différenciation visuelle côte à côte plus sophistiqué.

    Voir ma réponse étroitement liée à Comment supprimer un fichier de l’index dans git? , ainsi que ce catalogue officiel des clients Git – GUI .

    Pensez aussi à l’outil gitk , fourni avec git et très utile pour voir les changements