Допустим, я клонировал репозиторий и начал изменять файлы. Я знаю, что если у меня есть локальные незафиксированные изменения, я могу выполнить git diff test.txt
различие следующим образом, и он покажет мне разницу между текущим локальным HEAD и модифицированными незафиксированными изменениями в файле. Если я зафиксирую эти изменения, я смогу сравнить их с исходным репозиторием, используяgit diff master origin/master
Но есть ли способ отличить локальные изменения от исходного репозитория на сервере перед локальной фиксацией ? Я безуспешно пробовал различные варианты git diff --cached master origin/master
.
Ответы:
Учитывая, что удаленный репозиторий был кэширован,
git fetch
должно быть возможно сравнение с этими коммитами. Попробуйте следующее:источник
git diff master origin/master
это сделал, она все еще сравнивала с зафиксированной версией (очевидно, в ретроспективе). Но при отсутствии мастера теперь сравниваются локальные изменения с полученной версией.origin master
и где-то ещеorigin/master
. ИМХО, есть над чем поработать.git diff origin/master
возвратаfatal: ambiguous argument 'origin/master': unknown revision or path not in the working tree.
существует в источнике, например,git fetch origin master
работает нормально,Я знаю, что это не ответ на конкретный вопрос, но я нашел этот вопрос, чтобы сравнить файл в ветке и локальный незафиксированный файл, и я решил, что поделюсь
Синтаксис:
Примеры:
(Спасибо Эрику Боэсу за возможность не вводить имя файла дважды)
источник
commit-ish
и разделителю двоеточия. Документы по git-diff , похоже, не упоминают об этом. Пользуюсь им так долго, что не помню, где впервые нашел. Возможно, чужие примеры по другим командам, и я просто экспериментировалgit-diff
. Боюсь, что другой ответcommit-ish
- лучшее, что я могу придумать на данный момент.git diff master:./ -- README.md
. Таким образом, вам не нужно вводитьREADME.md
дважды, и вы можете легко добавить его к псевдониму.git diff master: -- README.md
./
/dev/null
Чтобы увидеть неэтапные (не добавленные) изменения в существующих файлах
git diff
Обратите внимание, что это не отслеживает новые файлы. Чтобы увидеть поэтапные изменения без фиксации
git diff --cached
источник
Если вы хотите сравнить файлы визуально, вы можете использовать:
Он автоматически запускает ваше приложение diff для каждого измененного файла.
PS: Если вы не установили приложение diff, вы можете сделать это, как в примере ниже (я использую Winmerge ):
источник