Appearance
Git status - Статус
git status
— это команда, используемая в системе управления версиями Git
для проверки текущего состояния файлов в вашей рабочей директории и индексе (также известном как "стейдж-область"). Она показывает, какие файлы были изменены, добавлены или удалены, и помогает вам понять, какие действия необходимо предпринять для фиксации изменений.
Статусные состояния файлов:
Файлы в Git
могут находиться в одном из следующих состояний:
Untracked
- не отслеживаемые- Файлы не отслеживаются системой контроля версий, которые находятся в рабочей директории, но не добавлены в
Git
. - Пример в выводе
git status
:shellUntracked files: (use "git add <file>..." to include in what will be committed) new_file.txt
- Файлы не отслеживаются системой контроля версий, которые находятся в рабочей директории, но не добавлены в
Unmodified
- неизменённые- Файлы, которые отслеживаются
Git
, но не имеют изменений по сравнению с последней фиксациейcommit
. - Такие файлы не отображаются в выводе
git status
, так как они находятся в "нормальном" состоянии.
- Файлы, которые отслеживаются
Modified
- изменённые- Файлы, которые отслеживаются
Git
, но были изменены с момента последней фиксацииcommit
. - Пример в выводе
git status
:shellChanges not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: existing_file.txt
- Файлы, которые отслеживаются
Staged
- добавленные в индекс- Файлы, которые были добавлены в индекс для отслеживания изменений с помощью
git add
, но изменения ещё не зафиксированы. - Пример в выводе
git status
:shellChanges to be committed: (use "git restore --staged <file>..." to unstage) new file: new_file.txt modified: existing_file.txt
- Файлы, которые были добавлены в индекс для отслеживания изменений с помощью
Как увидеть статусы файлов:
Чтобы увидеть статусы файлов в вашем репозитории Git
, используйте команду:
shell
git status
После выполнения этой команды Git
отобразит список файлов с их текущими статусами. Пример в выводе git status
:
shell
F:\code_last\try_git>git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
file_1_text.txt
nothing added to commit but untracked files present (use "git add" to track)
shell
F:\code_last\try_git>git status
На ветке master
Коммитов пока нет
Неотслеживаемые файлы:
(используйте "git add <file>...", чтобы включить их в коммит)
file_1_text.txt
ничего не добавлено в коммит, но есть неотслеживаемые файлы (используйте "git add", чтобы начать отслеживание)
Изменение статусов файлов:
Вы можете вручную изменять статусы файлов, используя следующие команды:
Добавление файлов:
- Чтобы добавить файл в индекс - для отслеживания изменений (
стейджинг-область
) и подготовить его к фиксацииcommit
, используйте:shellgit add <имя_файла>
- Для добавления всех измененных файлов используйте точку
add .
:shellgit add .
- Чтобы добавить файл в индекс - для отслеживания изменений (
Удаление файлов:
- Чтобы удалить файл из рабочей директории и отслеживания изменений, используйте:shell
git rm <имя_файла>
- Чтобы удалить файл из рабочей директории и отслеживания изменений, используйте:
Изменение отслеживаемых файлов:
- Если вы хотите отключить отслеживание файла, который уже находится в репозитории, используйте:shell
git rm --cached <имя_файла>
- Для восстановления отслеживания файла после его удаления из репозитория:shell
git add <имя_файла>
- Если вы хотите отключить отслеживание файла, который уже находится в репозитории, используйте:
git status
— это важный инструмент для понимания изменений в вашем репозитории и обеспечения правильного управления версиями файлов.
Практика git status
В папке проекта с репозиторием создадим три файла:
file_1_untracked.txt
:Untracked
- не отслеживаемыеfile_2_unmodified.txt
:Unmodified
- неизменённыеfile_3_modified.txt
:Modified
- изменённыеfile_4_stage.txt
:Staged
- добавленные в индекс
В VSC - визуал студия код результат созданных файлов может быть следующим:
Вывод git status
может выглядеть так:
shell
F:\code_last\try_git>git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
file_1_untracked.txt
file_2_unmodified.txt
file_3_modified.txt
file_4_stage.txt
nothing added to commit but untracked files present (use "git add" to track)
F:\code_last\try_git>
shell
F:\code_last\try_git>git status
На ветке master
Коммитов пока нет
Неотслеживаемые файлы:
(используйте "git add <file>...", чтобы включить их в коммит)
file_1_untracked.txt
file_2_unmodified.txt
file_3_modified.txt
file_4_stage.txt
ничего не добавлено в коммит, но есть неотслеживаемые файлы (используйте "git add", чтобы начать отслеживание)
F:\code_last\try_git>
В настоящее время все файлы проекта не отслеживаются гитом, т.е. гит не следит за изменениями в файлах и не хранит их. Подключим файлы к отслеживанию, т.е. переведем файлы в состояние stage
, воспользовавшись подсказанной командой git add <file_name>
. Для отслеживания подключим файлы со 2 по 4: file_2_unmodified.txt
,file_3_modified.txt
, file_4_stage.txt
shell
F:\code_last\try_git>git add file_2_unmodified.txt
F:\code_last\try_git>git add file_3_modified.txt
F:\code_last\try_git>git add file_4_stage.txt
F:\code_last\try_git>
и проверим статус репозитория git status
:
shell
F:\code_last\try_git>git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: file_2_unmodified.txt
new file: file_3_modified.txt
new file: file_4_stage.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
file_1_untracked.txt
F:\code_last\try_git>
shell
F:\code_last\try_git>git status
На ветке master
Коммитов пока нет
Изменения, готовые к коммиту:
(используйте "git rm --cached <file>...", чтобы убрать из индекса)
новый файл: file_2_unmodified.txt
новый файл: file_3_modified.txt
новый файл: file_4_stage.txt
Неотслеживаемые файлы:
(используйте "git add <file>...", чтобы включить их в коммит)
file_1_untracked.txt
F:\code_last\try_git>
Теперь из готовых с фиксации файлов удалим файл file_4_stage.txt
. Для этого воспользуемся подсказанной командой: git rm --cached <file>...
shell
F:\code_last\try_git>git rm --cached file_4_stage.txt
rm 'file_4_stage.txt'
F:\code_last\try_git>
Проверим статус репозитория git status
:
shell
F:\code_last\try_git>git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: file_2_unmodified.txt
new file: file_3_modified.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
file_1_untracked.txt
file_4_stage.txt
F:\code_last\try_git>
shell
F:\code_last\try_git>git status
На ветке master
Коммитов пока нет
Изменения, готовые к коммиту:
(используйте "git rm --cached <file>...", чтобы убрать из индекса)
новый файл: file_2_unmodified.txt
новый файл: file_3_modified.txt
Неотслеживаемые файлы:
(используйте "git add <file>...", чтобы включить их в коммит)
file_1_untracked.txt
file_4_stage.txt
F:\code_last\try_git>
Сделаем первую фиксацию commit
двух файлов file_2_unmodified.txt
, file_3_modified.txt
shell
F:\code_last\try_git>git commit -m "commit 1-st for files: file_2file_2_unmodified.txt, file_3_modified.txt"
[master (root-commit) 9991dfb] commit 1 for files: file_2file_2_unmodified.txt, file_3_modified.txt
2 files changed, 2 insertions(+)
create mode 100644 file_2_unmodified.txt
create mode 100644 file_3_modified.txt
F:\code_last\try_git>
shell
F:\code_last\try_git>git commit -m "фиксация 1-ая для файлов: file_2file_2_unmodified.txt, file_3_modified.txt"
[master (root-commit) 9991dfb] коммит 1 для файлов: file_2file_2_unmodified.txt, file_3_modified.txt
2 файла изменены, 2 вставки(+)
создан режим 100644 file_2_unmodified.txt
создан режим 100644 file_3_modified.txt
F:\code_last\try_git>
Проверим статус репозитория git status
:
shell
F:\code_last\try_git>git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
file_1_untracked.txt
file_4_stage.txt
nothing added to commit but untracked files present (use "git add" to track)
F:\code_last\try_git>
shell
F:\code_last\try_git>git status
На ветке master
Неотслеживаемые файлы:
(используйте "git add <file>...", чтобы включить их в коммит)
file_1_untracked.txt
file_4_stage.txt
ничего не добавлено в коммит, но есть неотслеживаемые файлы (используйте "git add", чтобы начать отслеживание)
F:\code_last\try_git>
Добавим файл file_4_stage.txt
снова к отслеживаемым файлам команда git add <file_name>
:
shell
F:\code_last\try_git>git add file_4_stage.txt
F:\code_last\try_git>
Содержимой файла file_3_modified.txt
, в Windows: используйте команду type
(В Linux и macOS: используйте команду cat
)
shell
F:\code_last\try_git>type file_3_modified.txt
# Modified file - измененный файл
F:\code_last\try_git>
Воспользовавшись редактором кода внесем изменения, добавив в него "New modify file - новые изменения файла":
Редактор кода отслеживает состояние репозитория, подсвечивает и подписывает буквами состояние фалов:
U
-Untracked
- не отслеживаемыйM
-Modified
- изменённыеA
-Added to staged
- добавленные в индекс отслеживание
Проверим статус репозитория git status
:
shell
F:\code_last\try_git>git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: file_4_stage.txt
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file_3_modified.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
file_1_untracked.txt
F:\code_last\try_git>
shell
F:\code_last\try_git>git status
На ветке master
Изменения, готовые к коммиту:
(используйте "git restore --staged <file>...", чтобы убрать из индекса)
новый файл: file_4_stage.txt
Изменения, не подготовленные к коммиту:
(используйте "git add <file>...", чтобы обновить то, что будет закоммичено)
(используйте "git restore <file>...", чтобы отменить изменения в рабочем каталоге)
изменен: file_3_modified.txt
Неотслеживаемые файлы:
(используйте "git add <file>...", чтобы включить их в коммит)
file_1_untracked.txt
F:\code_last\try_git>
В итоге получаем файлы в четырех базовых состояниях в репозитории:
file_4_stage.txt
:Staged
- добавленные в промежуточное состояние файл перед фиксациейcommit
, позволяет выборочно фиксировать изменения.file_3_modified.txt
:Modified
- ранее зафиксированный файл, изменённый, но не добавлен в отслеживаниеstage
.file_1_untracked.txt
:Untracked
- не отслеживаемый гитом файл.file_2_unmodified.txt
:Unmodified
- ранее зафиксированный файл, и далее не изменённый файл.
Практика:
- Проверяем текущий статус файлов через
git status
. - Добавляем необходимые файлы в
stage
с помощью командыgit add
. - Создаем коммит через
git commit
.