git diff --- Просмотр изменений
Команда git diff показывает, что именно изменилось в ваших файлах. Она сравнивает разные версии содержимого построчно, чтобы вы могли проверить свою работу перед коммитом.
Два типа diff
Рабочая директория vs. область индексации
Запуск git diff без аргументов показывает изменения в рабочей директории, которые ещё не проиндексированы:
git diff
Область индексации vs. последний коммит
Чтобы увидеть, что вы уже проиндексировали (что войдёт в следующий коммит), используйте:
git diff --staged
Иногда это записывают как git diff --cached --- они означают одно и то же.
Чтение вывода
Типичный diff выглядит так:
diff --git a/file.txt b/file.txt
index 83db48f..bf269f4 100644
--- a/file.txt
+++ b/file.txt
@@ -1,3 +1,4 @@
line one
-line two
+line two updated
+line three
line four
- Строки, начинающиеся с
-, были удалены (отображаются красным) - Строки, начинающиеся с
+, были добавлены (отображаются зелёным) - Строки без префикса --- это неизменённые контекстные строки
Попробуйте!
В репозитории уже есть зафиксированный файл. Измените его и исследуйте diff:
- Отредактируйте файл:
echo "updated content" > file.txt - Посмотрите непроиндексированный diff:
git diff - Проиндексируйте изменение:
git add file.txt - Убедитесь, что непроиндексированного diff больше нет:
git diff(должен быть пустым) - Посмотрите проиндексированный diff:
git diff --staged - Зафиксируйте:
git commit -m "Update file content" - Подтвердите, что всё чисто:
git diffиgit diff --staged(оба пустые)
Обратите внимание, как diff «перемещается» из git diff в git diff --staged после выполнения git add.
Сравнение конкретных файлов
Вы можете ограничить diff одним файлом:
git diff file.txt
git diff --staged file.txt
Это полезно, когда вы изменили много файлов, но хотите просмотреть только один.