"git diff" ничего не делает - PullRequest
       6

"git diff" ничего не делает

87 голосов
/ 27 августа 2010

Я предполагаю, что это где-то ошибка конфигурации, но я не могу понять, где. Обычные команды git работают нормально, но «git diff» ничего не делает. Чтобы быть в безопасности, я удалил внешние инструменты сравнения из моего файла .gitconfig. Он был установлен через MacPorts и является последней версией (1.7.2.2).

Я вижу, что когда я запускаю «git diff» из моей рабочей области, он просто выходит, ничего не делая.

$ git --version
git version 1.7.2.2
$ git diff
$ 

Если я создаю резервную копию одного каталога из моего корневого рабочего пространства, ввод «git diff» дает мне следующее:

$ git diff
usage: git diff [--no-index] <path> <path>

Это может быть ожидаемое поведение, так как я не в git-репозитории.

Любые идеи о том, что я могу сделать, чтобы устранить эту проблему?

Ответы [ 5 ]

102 голосов
/ 27 августа 2010

Выход по умолчанию для git diff - это список изменений, которые не были зафиксированы / добавлены в индекс. Если нет изменений, то нет вывода.

git diff [--options] [-] […]

Эта форма предназначена для просмотра изменений, которые вы внесли в индекс (область подготовки для следующего коммита). Другими словами, различия в том, что вы могли бы сказать git для дальнейшего добавления в индекс, но вы до сих пор этого не сделали.

Подробнее см. Документацию . В частности, прокрутите вниз к примерам и прочитайте этот раздел:

$ git diff            # (1)
$ git diff --cached   # (2)
$ git diff HEAD       # (3)
  1. Разностная рабочая копия с индексом
  2. DIFF индекс с HEAD
  3. Diff рабочая копия с HEAD

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

4 голосов
/ 19 сентября 2013

Примечание: начиная с git 1.8.5 или 1.9, четвертый квартал 2013 года :

Когда пользователь вводит "git diff" вне рабочего дерева думая, что он внутри одного, текущее сообщение об ошибке, состоящее из одной строки:

usage: git diff --no-index <path> <path>

может оказаться недостаточным, чтобы заставить его осознать ошибку.

Добавьте «Not a git repository» к сообщению об ошибке, когда мы попали в режим «--no-index» без явного параметра командной строки, чтобы дать нам указание сделать это.


См .:

Уточните документацию для "diff --no-index".
Укажите, что если не внутри репозитория, подразумевается --no-index и два аргумента обязательны.

Уточните сообщение об ошибке от diff-no-index, чтобы сообщить пользователю, что CWD являетсяне в репозитории, и поэтому два аргумента являются обязательными.

To compare two paths outside a working tree:
usage: git diff --no-index <path> <path>
2 голосов
/ 27 августа 2010

Ничего не делает, если ваш рабочий каталог чистый, и нет никаких отличий от последнего обновления.Попробуйте отредактировать файл и затем снова запустите git diff, и он должен показать diff.

1 голос
/ 27 августа 2010

Если вы используете его вне реального репозитория или рабочей копии, его поведение идентично GNU diff.Таким образом, вы должны сообщить 2 каталогов или файлов для сравнения.Пример:

git diff old_dir new_dir.

Если между ними есть какая-либо разница, на выходе отобразится, как и ожидалось.

0 голосов
/ 28 декабря 2015

Не в вашем случае, но, возможно, потому что файл, который вы передаете, не существует

$ git difftool HEAD HEAD^ -- path/that-not-exists

ничего не происходит

...