Я заключаю учебное руководство мерзавца в кавычки:
git diff shows the diff between HEAD and the current project state
Интересно, что это означает. РАЗВЕ ГОЛОВА не является текущим активным проектом?
Спасибо
Из « Указание ревизий »
HEAD
называет фиксацию, на которой вы основали изменения в рабочем дереве.
Есть и другие головы ( FETCH_HEAD
, ORIG_HEAD
и MERGE_HEAD
). См. ответ Джефроми для получения дополнительной информации.
Дело в том, что по умолчанию git diff
фактически показывает различия между «текущим состоянием вашего проекта» (т.е. вашими файлами в рабочем дереве) и индексом (не ГОЛОВА).
Другими словами, различия заключаются в том, что вы могли сказать git, чтобы он продолжал добавлять в индекс, но вы этого еще не сделали.
если вы выполните git diff --cached
, , то он сравнит индекс с HEAD.
См. книгу git для получения дополнительной информации (ссылка на архив) :
Обычно используется простой запуск
$ git diff
, который покажет вам изменения в рабочем каталоге, которые еще не подготовлены для следующей фиксации. Если вы хотите увидеть, что запланировано для следующего коммита, вы можете запустить
$ git diff --cached
, который покажет вам разницу между индексом и вашей последней фиксацией; что бы вы совершили, если запустите «git commit» без опции «-a». (В версиях Git 1.6.1 и новее, вы также можете использовать
git diff --staged
, что может быть легче запомнить.) Наконец, вы можете запустить$ git diff HEAD
, который показывает изменения в рабочем каталоге с момента вашего последнего коммита; что бы вы совершили, если запустите "git commit -a".
См. Также 365git: Получение различий между рабочим деревом и другими коммитами :
git diff
предназначен для отображения незафиксированных изменений (т. Е. Работы, которую вы сделали, но еще не зафиксировали в текущем проекте).
Вот полное объяснение: http://git-scm.com/docs/git-diff