
Чтобы сравнить локальные изменения в Git и подготовить к коммиту только нужное, сначала проверьте рабочую директорию командой git diff, затем индекс - командой git diff --cached. Добавляйте файлы через git add, а отдельные фрагменты - через git add -p. Перед коммитом повторно проверьте индекс: именно его содержимое попадёт в коммит.
Что проверить перед выборочным коммитом
- Убедитесь, что команда выполняется в нужном репозитории и на нужной ветке.
- Посмотрите состояние файлов командой
git status, включая новые и удалённые файлы. - Различайте изменения в рабочей директории и уже подготовленные изменения в индексе.
- Перед коммитом проверьте содержимое индекса через
git diff --cached. - Не используйте очистку или восстановление файлов, пока не убедились, что нужные правки сохранены.
Как увидеть различия между рабочей директорией, индексом и последним коммитом
Git разделяет локальную работу на три состояния: последний коммит, индекс и рабочую директорию. Индекс - это подготовленные изменения, которые войдут в следующий коммит. Команда git diff показывает незаписанные в индекс изменения, а git diff --cached - подготовленные изменения относительно последнего коммита.
Такой порядок подходит, когда в рабочей копии смешаны правки для разных задач и нужно выбрать содержимое коммита. Не начинайте выборочную подготовку, если не понимаете происхождение изменений или не можете отличить собственные правки от чужих: сначала уточните состояние ветки и сохраните нужную работу.
Какие команды Git показывают изменения в файлах и отдельных строках
Для сравнения и просмотра локальных правок достаточно установленного Git и доступа к рабочей копии репозитория. Команды ниже выполняются в терминале из каталога проекта; для просмотра изменений специальный интерфейс или сетевое подключение не требуются.
git status --short- краткий список изменённых, новых и удалённых файлов, а также файлов с изменениями в индексе.git diff- различия между рабочей директорией и индексом.git diff --cached- различия между индексом и последним коммитом.git diff HEAD- суммарные изменения отслеживаемых файлов относительно последнего коммита, включая уже подготовленные правки.git diff -- путь/к/файлу- изменения конкретного файла в рабочей директории; добавьте--cached, чтобы просмотреть его изменения в индексе.
Вывод diff показывает изменённые строки и окружающий контекст. Так проще понять, как сравнить изменения в Git по этапам, и как посмотреть изменения в Git перед добавлением файлов.
Как добавить в индекс только нужные файлы
Перед пошаговой подготовкой учтите риски и ограничения:
git addдобавляет текущую версию файла целиком; если в нём есть несвязанные правки, они тоже попадут в индекс.- Новые файлы не отображаются в обычном выводе
git diff, пока не добавлены в индекс; проверяйте их черезgit status. - При подготовке отдельных фрагментов внимательно проверяйте каждый блок: соседние строки могут относиться к другой задаче.
- Не запускайте
git restoreбез параметра--staged, если цель - только убрать файл из индекса: без него команда может заменить рабочую версию.
- Проверьте состояние проекта. Выполните
git status --short, затем изучите незаписанные изменения командойgit diff. Отдельно отметьте новые файлы и уже подготовленные изменения. - Добавьте нужные файлы целиком. Укажите каждый файл явно:
git add путь/к/файлу. Так вы не добавите случайно все изменения из проекта, как это может произойти приgit add .. - Подготовьте выбранные фрагменты. Для частичной подготовки запустите
git add -p путь/к/файлуи отвечайте на запросы Git для каждого блока. - Проверьте добавленное. Выполните
git diff --cachedи убедитесь, что в индексе только изменения для этой задачи. Если нужен коммит, подготовьте его командойgit commitтолько после проверки.
Чтобы добавить файлы в коммит Git, подготовьте их в индекс и проверьте его содержимое до создания коммита. Чтобы сделать коммит в Git, сначала убедитесь, что его состав соответствует задаче, затем выполните git commit -m "Краткое описание". Если вы изучаете Git для начинающих курс или осваиваете команды самостоятельно, полезно привыкнуть к проверке индекса до каждого коммита.
Как подготовить к коммиту отдельные фрагменты одного файла
Команда git add -p путь/к/файлу предлагает добавлять изменения блоками. Типичные ответы: y - добавить блок, n - пропустить, s - попробовать разделить блок на более мелкие части, q - завершить выбор. Набор доступных вариантов может зависеть от содержимого diff; Git показывает подсказки в терминале.
Перед коммитом проверьте результат по списку:
- В
git status --shortвидны ожидаемые файлы и состояние индекса. - В
git diff --cachedнет изменений из других задач. - Подготовленные блоки содержат необходимые строки вместе с нужным контекстом.
- Изменения, которые нужно оставить на потом, по-прежнему видны в выводе
git diff. - Новые файлы, которые должны попасть в коммит, добавлены явно.
- Удаления и переименования файлов соответствуют намерению.
- В индекс не попали временные файлы, секреты или локальные настройки.
Как проверить индекс и не включить лишние изменения
Типичные ошибки при выборочной подготовке:
- Проверять только
git diffи забывать, что он не показывает уже подготовленные изменения. - Считать, что
git statusсам по себе объясняет содержимое каждого изменения; для деталей используйтеgit diffиgit diff --cached. - Выполнять
git add ., не проверив файлы: команда может подготовить больше, чем требуется. - Добавить файл целиком, хотя в нём есть правки для нескольких задач.
- Принять блок в режиме
git add -p, не прочитав его целиком. - Не проверить индекс после добавления следующего файла или фрагмента.
- Ожидать, что обычный
git diffпокажет содержимое нового неотслеживаемого файла.
Как отменить выборочную подготовку, не потеряв правки
- Убрать файл из индекса. Выполните
git restore --staged путь/к/файлу. Изменения останутся в рабочей директории, но файл больше не будет подготовлен к коммиту. - Убрать из индекса все подготовленные изменения. Выполните
git restore --staged ., затем проверьте состояние командойgit status. Эта команда меняет индекс, а не рабочие файлы. - Заново выбрать фрагменты. Для нужного файла снова запустите
git add -p путь/к/файлуи выберите подходящие блоки.
Если нужно отменить сами изменения в рабочем файле, это отдельное действие. Не используйте для этого команды восстановления, пока не сохранили правки, которые хотите оставить.
Нюансы выборочной подготовки изменений в Git
Чем отличаются git diff и git diff --cached?
git diff показывает изменения в рабочей директории, ещё не добавленные в индекс. git diff --cached показывает подготовленные изменения относительно последнего коммита.
Как добавить в коммит только часть файла?
Запустите git add -p путь/к/файлу и выберите нужные блоки. Перед коммитом проверьте результат командой git diff --cached.
Можно ли подготовить новые файлы выборочно?
Новый файл можно добавить командой git add путь/к/файлу. Чтобы подготовить отдельные блоки, используйте интерактивный режим git add -p и проверьте доступные варианты в подсказке Git.
Как убрать файл из индекса, не удаляя правки?
Выполните git restore --staged путь/к/файлу. Команда снимет подготовку, сохранив изменения в рабочей директории.
Почему обычный git diff не показывает все локальные изменения?
Он показывает только различия между рабочей директорией и индексом. Уже подготовленные изменения смотрите через git diff --cached, а общее состояние - через git status.
Когда запускать git commit?
После проверки индекса командой git diff --cached и подтверждения, что в нём только нужные изменения. Сам коммит создаётся из содержимого индекса.