В чем различия между следующими командами git?
git diff HEAD
git diff HEAD^
git diff --cached
git diff --staged
git diff
git add
Это выглядит так:
Working Directory <----+--------+------+ | | | | | | | | V | | | "git add" | | | | diff | | | | | | V | | | Index <----+ diff HEAD | | | | | | | | | V | | | "git commit" | | | | diff --cached | | | diff --staged | | V | | | HEAD <----+--------+ | | | | diff HEAD^ V | previous "git commit" | | | | | V | HEAD^ <--------------------+
Из Git Community Book :
покажет вам изменения в рабочем каталоге, которые не являютсяготовится к следующему коммиту.
покажет разницу между индексом и вашим последним коммитом;что вы будете делать, если вы запустите «git commit» без опции «-a».
показывает изменения врабочий каталог с момента вашего последнего коммита;что вы будете делать, если запустите "git commit -a".
Вот простой способ запомнить эти команды:
--cached
Получайте удовольствие, смешивая их по своему вкусу:)
HEAD - текущий указатель HEAD в дереве, HEAD^ - фиксация перед HEAD. --cached Я не уверен в этом. --cached покажет вам любые изменения, которые вы внесли, но еще не добавили в индекс.
HEAD
HEAD^
Учебное пособие git на kernal.org очень хорошо прочитано.