Как различать локальные нефиксированные изменения и происхождение

Скажем, я клонировал репозиторий и начал изменять файлы. Я знаю, что если у меня есть локальные нефиксированные изменения, я могу сделать diff следующим образом git diff test.txt, и он покажет мне разницу между текущим локальным HEAD и измененными незафиксированными изменениями в файле. Если я зафиксирую эти изменения, я могу разграничить их с исходным репозиторием, используя git diff master origin/master

Но есть ли способ локализовать локальные изменения с исходным репозиторием на сервере, прежде чем совершать локальные? Я пробовал различные перестановки git diff --cached master origin/master без везения.

Ответ 1

Учитывая, что удаленный репозиторий был кэширован через git fetch, должно быть возможно сравнить с этими коммитами. Попробуйте следующее:

$ git fetch origin
$ git diff origin/master

Ответ 2

Я знаю, что это не ответ на заданный вопрос, но я нашел этот вопрос, чтобы разглядеть файл в ветке и локальный незафиксированный файл, и я решил, что буду делиться

Синтаксис:

git diff <commit-ish>:./ -- <path>

Примеры:

git diff origin/master:./ -- README.md
git diff HEAD^:./ -- README.md
git diff [email protected]{0}:./ -- README.md
git diff 1A2B3C4D:./ -- README.md

(Спасибо Эрику Боэсу за то, что вам не нужно было дважды вводить имя файла)

Ответ 3

Чтобы просмотреть неиспользуемые (не добавленные) изменения в существующие файлы

git diff

Обратите внимание, что это не отслеживает новые файлы. Чтобы увидеть поэтапные, немедленные изменения

git diff --cached

Ответ 4

Если вы хотите сравнить файлы визуально, вы можете использовать:

git difftool

Он автоматически запустит ваше приложение diff для каждого измененного файла.

PS: Если вы не установили приложение diff, вы можете сделать это, как в приведенном ниже примере (я использую 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