Как провести различие между локальными незафиксированными изменениями и источником
допустим, я клонировал репозиторий и начал изменять файлы. Я знаю, что если у меня есть локальные незафиксированные изменения, я могу сделать diff следующим образом git diff test.txt и это покажет мне разницу между текущей локальной головкой и измененными, незафиксированными изменениями в файле. Если я зафиксирую эти изменения, я могу отличить его от исходного репозитория с помощью git diff master origin/master
но есть ли способ отличить локальные изменения от исходного репозитория на сервере до совершая локально? Я пробовал различные перестановки git diff --cached master origin/master не повезло.
4 ответов:
учитывая, что удаленный репозиторий из кэша через
git fetchможно сравнить с этими изменениями. Попробуйте следующее:$ git fetch origin $ git diff origin/master
Я знаю, что это не ответ на точный вопрос, но я нашел этот вопрос, глядя на diff a file в ветке и локальном незафиксированном файле, и я решил, что поделюсь
синтаксис:
git diff <commit-ish>:./ -- <path>примеры:
git diff origin/master:./ -- README.md git diff HEAD^:./ -- README.md git diff stash@{0}:./ -- README.md git diff 1A2B3C4D:./ -- README.md(спасибо Eric Boehs за способ не нужно вводить имя файла дважды)
посмотреть непостановочных (не добавлен) изменения в существующие файлы
git diffобратите внимание, что это не отслеживает новые файлы. Чтобы увидеть поэтапные, незавершенные изменения
git diff --cached
Если вы хотите сравнить файлы визуально вы можете использовать:
git difftoolон автоматически запустит ваше приложение diff для каждого измененного файла.
PS: Если вы не установили приложение дифференциала, вы можете сделать это как в примере ниже(я использую 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
Comments