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


Я предполагаю, что это ошибка конфигурации где-то, но я не могу понять, где. Обычные команды git, похоже, работают нормально, но "git diff" ничего не делает. Чтобы быть в безопасности, я удалил внешние инструменты diff из моего .файл gitconfig. Это было установлено через MacPorts и является версией lates (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 77

5 ответов:

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

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

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

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

$ git diff            # (1)
$ git diff --cached   # (2)
$ git diff HEAD       # (3)
  1. Diff рабочая копия с индексом
  2. Diff индекс с головой
  3. Diff рабочая копия с головой

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

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

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

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

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

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


посмотреть:

  • commit 286bc123cd (gitster, Junio C Hamano), который поясняет, что git diff --no-index может действовать как обычный (не-git) diff.
  • commit b214eddfb2 (Dale R. Worley), который уточняет сообщение об ошибке:

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

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

To compare two paths outside a working tree:
usage: git diff --no-index <path> <path>

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

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

git diff old_dir new_dir.

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

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

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

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