В чем разница между следующими командами git?Каковы различия между этими командами git diff?
git diff HEAD
git diff HEAD^
git diff --cached
или синонимgit diff --staged
git diff
В чем разница между следующими командами git?Каковы различия между этими командами git diff?
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^ <--------------------+
HEAD
является текущим HEAD
указатель на дереве, HEAD^
это совершить, прежде чем HEAD
.
--cached
Я не уверен.
--cached
покажет вам любые изменения, которые вы внесли, но не добавили в индекс.
git tutorial на kernal.org очень хорошо читается.
Вы получили '--cached' немного неправильно: он показывает только изменения, которые вы * у * добавляется в индекс (но не совершала). – Amber
git diff HEAD
: Diff между HEAD и рабочим каталогом.git diff HEAD^
: Разница между прямым предком HEAD и рабочим каталогом.git diff --cached
или синоним git diff --staged
: Разница между ГОЛОВКОЙ и индексом.git diff
: Разница между индексом и рабочим каталогом.У кого-нибудь есть хороший способ запомнить это? Я продолжаю возвращаться сюда. –
@ kevin Лучше, чем делать судоку? – Samuel
git diff
покажет вам изменения в рабочей директории, которые еще не ступенчатого для следующий фиксация.
git diff --cached
покажет вам разницу между индексом и последнего коммита; что вы бы совершили, если вы запустили «git commit» без опции «-a».
git diff HEAD
показывает изменения в рабочей директории с момента последнего совершения; что вы будете совершать, если вы запустите «git commit -a».
Вот простой способ запомнить эти команды:
git diff
«s быть рабочим каталогом, и его целью является индексом.--cached
изменяет источник на индекс. Это не обязательно изменяет цель после добавления дополнительных аргументов. Но для удобства цель становится последней фиксацией, если она не указана.Весело смешивания их по своему вкусу :)
@Picasso Нарисовано ли вручную или вы использовали какой-то инструмент ASCII art? Есть ли какая-нибудь команда git для этого? ;) – takeshin
@takeshin: Рисованные; это не так сложно. (Но есть режим emacs для рисования ascii art, а не то, что я его использую.) – Amber
+1 для только ascii-art. Одно изображение = 1000 слов; Один ascii-art = 1025 символов. –