Comment faire la différence entre les modifications locales non engagées et l’origine

Disons que j’ai cloné un référentiel et commencé à modifier des fichiers. Je sais que si j’ai des modifications locales non validées, je peux faire un diff comme suit git diff test.txt et cela va me montrer la différence entre le HEAD local actuel et les modifications modifiées et non validées du fichier. Si je commets ces modifications, je peux les différencier du repository d’origine en utilisant git diff master origin/master

Mais existe-t-il un moyen de différencier les modifications locales du référentiel d’origine sur le serveur avant de procéder à une validation locale? J’ai essayé différentes permutations de git diff --cached master origin/master sans chance.

Étant donné que le repository distant a été mis en cache via git fetch il devrait être possible de le comparer à ces commits. Essayez ce qui suit:

 $ git fetch origin $ git diff origin/master 

Je sais que ce n’est pas une réponse à la question exacte posée, mais j’ai trouvé cette question à la recherche d’un fichier dans une twig et d’un fichier local non engagé et j’ai pensé partager

Syntaxe:

 git diff :./ --  

Exemples:

 git diff origin/master:./ -- README.md git diff HEAD^:./ -- README.md git diff stash@{0}:./ -- README.md git diff 1A2B3C4D:./ -- README.md 

(Merci Eric Boehs pour ne pas avoir à taper deux fois le nom du fichier)

Pour voir les modifications non échelonnées (non ajoutées) apscopes aux fichiers existants

git diff

Notez que cela ne suit pas les nouveaux fichiers. Pour voir les changements mis en scène et non engagés

git diff --cached

Si vous souhaitez comparer les fichiers visuellement, vous pouvez utiliser:

 git difftool 

Il démarrera automatiquement votre application diff pour chaque fichier modifié.

PS: Si vous n’avez pas défini d’application diff, vous pouvez le faire comme dans l’exemple ci-dessous (j’utilise Winmerge ):

 git config --global merge.tool winmerge git config --replace --global mergetool.winmerge.cmd "\"C:\Program Files (x86)\WinMerge\WinMergeU.exe\" -e -u -dl \"Base\" -dr \"Mine\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"" git config --global mergetool.prompt false