Ответ 1
Учитывая, что удаленный репозиторий был кэширован через git fetch
, должно быть возможно сравнить с этими коммитами. Попробуйте следующее:
$ git fetch origin
$ git diff origin/master
Скажем, я клонировал репозиторий и начал изменять файлы. Я знаю, что если у меня есть локальные нефиксированные изменения, я могу сделать diff следующим образом git diff test.txt
, и он покажет мне разницу между текущим локальным HEAD и измененными незафиксированными изменениями в файле. Если я зафиксирую эти изменения, я могу разграничить их с исходным репозиторием, используя git diff master origin/master
Но есть ли способ локализовать локальные изменения с исходным репозиторием на сервере, прежде чем совершать локальные? Я пробовал различные перестановки git diff --cached master origin/master
без везения.
Учитывая, что удаленный репозиторий был кэширован через git fetch
, должно быть возможно сравнить с этими коммитами. Попробуйте следующее:
$ git fetch origin
$ git diff origin/master
Я знаю, что это не ответ на заданный вопрос, но я нашел этот вопрос, чтобы разглядеть файл в ветке и локальный незафиксированный файл, и я решил, что буду делиться
Синтаксис:
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
(Спасибо Эрику Боэсу за то, что вам не нужно было дважды вводить имя файла)
Чтобы просмотреть неиспользуемые (не добавленные) изменения в существующие файлы
git diff
Обратите внимание, что это не отслеживает новые файлы. Чтобы увидеть поэтапные, немедленные изменения
git diff --cached
Если вы хотите сравнить файлы визуально, вы можете использовать:
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