"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
ничего не происходит