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

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

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

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

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

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

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

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

Ответ 1

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

git diff [--options] [-] [...]

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

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

$ git diff            # (1)
$ git diff --cached   # (2)
$ git diff HEAD       # (3)
  • Разверните рабочую копию с индексом
  • Разверните индекс с помощью HEAD
  • Разверните рабочую копию с помощью HEAD

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

Ответ 2

Примечание: запуск git 1.8.5 или 1.9, Q4 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>

Ответ 3

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

Ответ 4

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

git diff old_dir new_dir.

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

Ответ 5

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

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

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