Git Diff
Последнее обновление
git diff показывает точные построчные изменения между двумя состояниями вашего репозитория. Без аргументов он показывает то, что вы изменили, но ещё не проиндексировали. Добавьте --staged, чтобы увидеть проиндексированное, укажите два коммита или ветки для их сравнения или укажите файл, чтобы сузить область.
Попробуйте это в терминальном playground - реальная оболочка в вашем браузере, ничего устанавливать не нужно.
Синтаксис
| Command | What it does |
|---|---|
git diff | Неиндексированные изменения относительно индекса |
git diff --staged | Проиндексированные изменения относительно последнего коммита |
git diff HEAD | Все изменения с момента последнего коммита |
git diff main feature | Разница между двумя ветками |
git diff <hash1> <hash2> | Разница между двумя коммитами |
git diff -- file.txt | Изменения в одном файле |
Частые случаи
| Goal | Command |
|---|---|
| Посмотреть, что вы собираетесь закоммитить | git diff --staged |
| Посмотреть незакоммиченную работу | git diff |
| Сравнить вашу ветку с main | git diff main |
| Только имена изменённых файлов | git diff --name-only |
FAQ по git diff
Что git diff показывает по умолчанию?
Без аргументов
git diff показывает изменения в вашем рабочем дереве, которые ещё не проиндексированы - то, что вы отредактировали с момента последнего git add. Чтобы увидеть уже проиндексированное (и что будет закоммичено следующим), используйте git diff --staged; чтобы увидеть всё с момента последнего коммита, используйте git diff HEAD.В чём разница между git diff и git diff --staged?
git diff сравнивает ваше рабочее дерево с областью индексирования (неиндексированные изменения). git diff --staged (также --cached) сравнивает область индексирования с последним коммитом (проиндексированные изменения). Вместе они показывают две половины вашей незакоммиченной работы.Как сделать diff двух веток или коммитов?
Укажите их:
git diff main feature показывает, чем различаются две ветки, а git diff <hash1> <hash2> сравнивает два коммита. Добавьте -- <file> в конце, чтобы ограничить сравнение одним файлом.Как увидеть только то, какие файлы изменились, а не полный diff?
Используйте
git diff --name-only для получения только имён файлов или git diff --stat для сводки, показывающей каждый файл и сколько строк изменилось. Это удобно для быстрого обзора перед чтением полного построчного diff.Могу ли я попрактиковаться в этом онлайн?
Да. Откройте терминальный playground, чтобы запустить
git diff в реальной оболочке в вашем браузере - ничего устанавливать не нужно. Бесплатный интерактивный курс Git от Coddy также пошагово охватывает изучение изменений.