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 il me montrera la différence entre le HEADlocal en cours et les modifications modifiées et non validées du fichier. Si je valide ces modifications, je peux les comparer au référentiel d'origine en utilisant git diff master Origin/master
Mais existe-t-il un moyen de différencier les modifications locales avec le référentiel d'origine sur le serveur avant commettre localement? J'ai essayé diverses permutations de git diff --cached master Origin/master
sans succès.
Étant donné que le référentiel distant a été mis en cache via git fetch
, il devrait être possible de comparer ces validations. 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 qui cherchait à distinguer un fichier dans une branche et un fichier local non enregistré et j'ai pensé que je partagerais
Syntaxe:
git diff <commit-ish>:./ -- <path>
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 un moyen de ne pas avoir à taper le nom de fichier deux fois)
Pour voir les modifications non échelonnées (non ajoutées) aux fichiers existants
git diff
Notez que cela ne suit pas les nouveaux fichiers. Pour voir les modifications mises en scène et non validées
git diff --cached
Si vous souhaitez comparer les fichiers visuellement, vous pouvez utiliser:
git difftool
Votre application diff démarrera automatiquement 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