Процесс git committ состоит из двух частей. Сначала вы «ставите» отдельные файлы, а затем выполняете команду «commit», которая фактически добавляет «поэтапные» файлы в хранилище. Поэтому, если вы хотите «ставить» файлы, вы сначала будете использовать команду «git add»:
git add myfile1
Вы можете сделать это для любого количества файлов. Когда вы вызываете «git status», вы должны увидеть список поставленных файлов. Вы можете «добавлять» файлы, которые уже находятся в вашем хранилище, но имеют изменения, и вы также можете «добавлять» файлы, которых еще нет в вашем хранилище. Новые файлы будут появляться как новые в промежуточной области, а другие будут появляться как измененные, но когда вы наконец вызовете «git commit», вы будете фиксировать все, что находится в стадии подготовки. Опция "-a" для git commit означает автоматическую подготовку всех измененных файлов, а также их фиксацию (Примечание: сюда не входят файлы, которых еще нет в хранилище).
Вот пример:
У меня есть хранилище, где у меня есть два файла: file1.txt и file2.txt
Когда я вызываю git status, я получаю следующее:
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: file2.txt
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# file3.txt
Поэтому, если я хочу зафиксировать изменения как file2.txt, так и file3.txt, я могу сделать следующее:
git add file2.txt
git add file3.txt
git commit
Это подтвердит как новый файл, так и изменения, сделанные в file2.txt
Если бы я использовал git commit -a, то только изменения file2.txt были бы зафиксированы, а новый файл (file3.txt) был бы проигнорирован.
Таким образом, чтобы получить тот же эффект, я мог бы также сделать:
git add file3.txt
git commit -a
В этом случае мне не нужно добавлять измененный файл, потому что опция -a коммит позаботится об этом.
Примечание : Если вы вызываете git commit без каких-либо файлов "staged", ничего не произойдет.