Показать как поэтапное, так и рабочее дерево в git diff?

Если я запустил git diff, я вижу изменения в рабочем дереве, и если я запустил git diff --staged (альтернативно --cached), то я вижу изменения, которые устраиваются (w/git add), но есть ли с помощью git diff, чтобы увидеть все за один раз?

Ответ 1

Есть ли способ с git diff видеть все за один раз?

Существует git 2.4.0+ (апрель 2015 г.).

См. совершить 4055500 из Michael J Gruber mjg:

commit/status: показать diff с индексом-worktree с помощью -v -v (или -vv)

git commit и git status в длинном формате показывают разницу между HEAD и индекс при задании -v. Это позволяет просматривать фиксацию.

Они также перечисляют отслеживаемые файлы с неустановленными изменениями, но без diff.

Ввести "-v -v" (или -vv), который показывает разницу между индексом и worktree в дополнение к индексу HEAD index. Это позволяет просматривать неустановленные изменения, которые могут отсутствовать в фиксации.

В случае '-v -v' (или -vv) дополнительные строки заголовка

Changes to be committed:

и

Changes not staged for commit:

вставлены перед различиями, которые равны значениям в статусной части; последнему предшествует 50 * -, чтобы он больше торчал.

В случае OP простой git status -v -v (или git status -vv) будет отображаться как поэтапный, так и нестационарный diff.

Ответ 2

Если вы имеете в виду изменения между рабочим деревом и вашим сообщением HEAD (т.е. как поэтапные, так и нестационарные изменения вместе), это делается только с помощью:

git diff HEAD

Ответ 3

diffuse инструмент визуального разграничения может сделать это: он отобразит три панели, если будут выполнены некоторые, но не все изменения. В случае конфликтов будет даже четыре панели.

Screenshot of diffuse with staged and unstaged edits

Вызвать его с помощью

diffuse -m

в вашей рабочей копии Git.

Если вы спросите меня, лучший визуальный отличит, который я видел в течение десятилетия.