2016-12-20 2 views
0

Existe-t-il un moyen de visualiser les différences entre les versions staged et unstaged du même fichier?Différences entre les versions étagées et non statiques du même fichier, en utilisant difftool

Par exemple:

Changes to be committed: 

    modified: conf/application.conf 

Changes not staged for commit: 
    (use "git add/rm <file>..." to update what will be committed) 
    (use "git checkout -- <file>..." to discard changes in working directory) 

    modified: conf/application.conf 

Cela se produit lorsque je mets en scène un changement et je modifie à nouveau le fichier, sans la mettre en scène.

EDIT

La commande git status -vv est pas assez bon, parce que je dois utiliser la commande diff/difftool. En effet, en pratique, il y a trop de changements dans trop de fichiers, et le fait de les parcourir n'est pas efficace. Mais diff/difftool me permet de spécifier le fichier qui m'intéresse.

+0

Il est le même fichier. – Maroun

+0

@MarounMaroun Oui, c'est le but. Git se concentre sur les modifications apportées à un fichier, pas sur le fichier lui-même. Voir cette question: https://stackoverflow.com/questions/24837841/git-can-a-file-be-both-staged-and-unstaged-for-commit – DrKaoliN

Répondre

8

git diff affichera la différence entre votre espace de travail et l'index. (l'indice est l'endroit où les fichiers mis en scène en direct)

Cela peut ne pas sembler évident parce que nous utilisons habituellement git diff pour voir les changements dans l'espace de travail vs contrôles qui sont effectués. Cependant, sur le plan technique git diff montre l'espace de travail vs index, et si vous n'avez pas ajouté de modifications à l'index, puis l'index correspond à ce que vous avez extrait.

  • pour voir l'espace de travail vs repo: git diff HEAD
  • pour voir index vs repo: git diff --cached
  • pour voir l'espace de travail vs index: git diff
+0

Merci beaucoup! C'est la réponse que je cherchais. – DrKaoliN

0

Si vous exécutez la commande git status -vv, vous verrez les changements textuels du fichier. Voir doc.

+0

Ceci ne répond pas à ma question. – DrKaoliN

+0

Pouvez-vous élaborer @DrKaoliN, peut-être que j'ai mal compris. L'exécution de cette commande affichera toutes les modifications apportées à 'conf/application.conf' depuis que vous l'avez générée. N'est-ce pas la même chose que de montrer la différence entre la version montée et mise à jour de 'conf/application.conf'? –

+0

Eh bien, cette commande particulière ne m'aide pas parce que j'ai besoin d'utiliser la commande 'diff' ou' difftool', pour que je puisse voir ces différences _just pour le fichier spécifié_ ie je peux taper 'git diff conf/application.conf 'mais en tapant' git status -vv conf/application.conf', je vais toujours montrer tous les changements dans la console. Parce qu'en pratique je n'ai jamais qu'un seul fichier modifié, il y a peut-être des dizaines de fichiers, avec des dizaines de lignes de code modifiées, et défiler pendant une demi-minute pour trouver ce dont j'ai besoin n'est pas efficace. Mais techniquement, votre réponse est correcte, en effet. – DrKaoliN