В чем разница между следующими командами git?
-
git diff HEAD
-
git diff HEAD^
-
git diff --cached
или синонимgit diff --staged
-
git diff
В чем разница между следующими командами git?
git diff HEAD
git diff HEAD^
git diff --cached
или синоним git diff --staged
git diff
git diff HEAD
- показывает, что изменилось с момента последнего коммита.git diff HEAD^
- показывает, что изменилось с момента фиксации до последней фиксации.git diff --cached
- Показать, что было добавлено в индекс через git add
, но еще не выполнено.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 diff HEAD
: Diff между HEAD и рабочим каталогом.git diff HEAD^
: Разница между прямым предком HEAD и рабочим каталогом.git diff --cached
или синоним git diff --staged
: Diff между HEAD и индексом.git diff
: Разность между индексом и рабочим каталогом. git diff
покажет вам изменения в рабочем каталоге, которые еще не поставлены для следующей фиксации.
git diff --cached
покажет вам разницу между индексом и последним фиксацией; что вы бы совершили, если вы запустили "git commit" без опции "-a".
git diff HEAD
показывает изменения в рабочем каталоге с момента последнего коммита; что вы будете совершать, если вы запустите "git commit -a".
Вот простой способ запомнить эти команды:
git diff
считается рабочим
каталог, а его целью является индекс.--cached
изменяет источник на индекс. Это не обязательно изменяет цель после добавления дополнительных аргументов. Но для удобства цель становится последней фиксацией, если она не указана.Получайте удовольствие, смешивая их по своему вкусу:)
HEAD
- текущий указатель HEAD
в дереве, HEAD^
- это фиксация до HEAD
. --cached
Я не уверен.--cached
покажет вам какие-либо изменения, которые вы внесли, но не добавили в индекс.
git учебник на kernal.org - очень хорошее чтение.