git - разница текущих изменений перед фиксацией

106

Я изменил несколько файлов в репозитории git, но еще не зафиксировал их.

Я могу получить список изменений, просто вызвав git status. Но как мне получить список строк или содержимого, которые я изменил, в дополнение к именам файлов?

Сначала я думал об использовании git diff , но, похоже, он полезен только для сравнения уже внесенных изменений.

Обычно я просто делаю это meld ., но в этом случае я подключаюсь к внешнему серверу через ssh.

кикито
источник

Ответы:

153

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

Если вы уже добавили ( поставили ) изменения в промежуточную область , то все git diff --stagedсделает. Промежуточная область - это данные, из которых будет сформирована следующая фиксация git commit.

PS Хорошее чтение (IMO) для новичков в Git:

  • https://git-scm.com/book/en/v2 (большинство глав; объясняет модель, лежащую в основе Git, и отвечает на большинство типичных вопросов)
  • а затем сразу http://gitready.com/ (советы по использованию).
Миша Арефьев
источник
Не применяется только к файлам, которые еще не добавлены? Думал, что вам нужно использовать кешированный флаг.
пбонд 06
4
@peterbond man git-diffговорит--staged is a synonym of --cached
Миша Арефьев
2
Технически @peterbond поставил средства , добавленные в промежуточной области , которая не является пока фиксации. Я уточнил это в правке.
Миша Арефьев
1
@Mischa В документации говорится, что поведение по умолчанию git diff- вычисление разницы между рабочим каталогом и индексом , а неHEAD
Аксель
Мне не приходило в голову вызывать git diff без параметров. Спасибо!
kikito 06
10

В таких случаях я использую:

git diff HEAD *

Это покажет изменения с момента последней фиксации. Хотя как-то шустрее работает с

git diff .

или

git diff

Чтобы увидеть изменения в ранее git addотредактированных файлах, используйте stagedфлаг:

git diff --staged
EliuX
источник