Перейти к содержимому

git add

Описание

Команда git add добавляет изменения из рабочего каталога в область подготовки. С её помощью вы сообщаете Git, что хотите включить обновления определённого файла в следующий коммит. Однако, чтобы зафиксировать эти изменения, необходимо также выполнить git commit. Вместе с упомянутыми выше командами, git status также полезна для проверки состояния рабочего каталога и области подготовки.

gitadd

Принципы работы

Команды git add и git commit используются для записи версий проекта в историю репозитория. Они необходимы каждому пользователю Git, поскольку составляют основу рабочего процесса Git.

Во время разработки проекта вы сначала редактируете файлы в рабочем каталоге. Когда копия текущего состояния готова к сохранению, вы помещаете изменения в область подготовки с помощью git add. Команду git add следует выполнять каждый раз, когда вы изменяете файл.

Область подготовки

Основная роль команды git add — переносить изменения из рабочего каталога в область подготовки Git. Область подготовки Git — одна из его самых особенных характеристик, которая позволяет собирать все связанные изменения в очень точные снимки состояния. Только после этого вы можете зафиксировать эти изменения в истории проекта.

Часто используемые параметры

  1. Подготовка изменений в <file> для следующего коммита:

git add file

bash
git add <file>
  1. Подготовка всех изменений в <directory> для следующего коммита:

git add directory

bash
git add <directory>
  1. Подготовка всех изменений в уже отслеживаемых файлах:

git add -u

bash
git add -u
  1. Интерактивный режим patch (подготовка изменений по отдельным фрагментам):

git add -p

bash
git add -p

Примеры использования git add

Команды git add и git commit используются для создания первого коммита текущего каталога, а также для записи изменений в существующие файлы.

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

Добавить файл

bash
git add hello.py

Зафиксировать изменения

bash
git commit

Интерактивный режим

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

  • y - подготовить фрагмент
  • n - не подготавливать фрагмент
  • q - выйти; не подготавливать фрагмент и все оставшиеся
  • a - подготовить фрагмент и все последующие фрагменты в файле
  • d - не подготавливать фрагмент и все последующие фрагменты в файле
  • g - выбрать фрагмент для перехода
  • / - искать фрагмент, соответствующий заданному регулярному выражению
  • j - перейти к следующему фрагменту
  • J - перейти к предыдущему фрагменту
  • k - перейти к предыдущему фрагменту
  • K - перейти к предыдущему невыбранному фрагменту
  • s - разделить текущий фрагмент на более мелкие
  • e - вручную отредактировать текущий фрагмент
  • ? - вывести справку

Редактирование патчей

Вызов git add -e или выбор e в интерактивном селекторе фрагментов открывает патч в вашем редакторе. После выхода из редактора результат применяется к индексу. Вы можете вносить в патч любые изменения, но некоторые правки могут привести к сложному выводу или даже сделать патч неприменимым. Если вы хотите полностью отказаться от операции, просто удалите все строки патча. Ниже приведены некоторые распространённые элементы, которые можно увидеть в патче, и какие операции редактирования для них имеют смысл.

Строки, начинающиеся с +, обозначают добавленное содержимое. Вы можете удалить их, чтобы не подготавливать любые добавленные строки.

Строки, начинающиеся с -, обозначают удалённое содержимое. Чтобы не подготавливать их удаление, можно заменить - на пробел ().

Изменённое содержимое показывается строками - (удаление старого содержимого), за которыми следуют строки + (добавление заменяющего содержимого). Чтобы не подготавливать изменение, замените строки - на пробелы и удалите строки +. Обратите внимание, что изменение только одной половины пары может привести к запутанным изменениям в индексе.

Практика

What are the functionalities and options associated with the 'git add' command?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.