Skip to content

Git status - Статус

git status — это команда, используемая в системе управления версиями Git для проверки текущего состояния файлов в вашей рабочей директории и индексе (также известном как "стейдж-область"). Она показывает, какие файлы были изменены, добавлены или удалены, и помогает вам понять, какие действия необходимо предпринять для фиксации изменений.

Статусные состояния файлов:

Файлы в Git могут находиться в одном из следующих состояний:

  1. Untracked - не отслеживаемые

    • Файлы не отслеживаются системой контроля версий, которые находятся в рабочей директории, но не добавлены в Git.
    • Пример в выводе git status:
      shell
      Untracked files:
         (use "git add <file>..." to include in what will be committed)
            new_file.txt
  2. Unmodified - неизменённые

    • Файлы, которые отслеживаются Git, но не имеют изменений по сравнению с последней фиксацией commit.
    • Такие файлы не отображаются в выводе git status, так как они находятся в "нормальном" состоянии.
  3. Modified - изменённые

    • Файлы, которые отслеживаются Git, но были изменены с момента последней фиксации commit.
    • Пример в выводе git status:
      shell
      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:   existing_file.txt
  4. Staged - добавленные в индекс

    • Файлы, которые были добавлены в индекс для отслеживания изменений с помощью git add, но изменения ещё не зафиксированы.
    • Пример в выводе git status:
      shell
      Changes 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", чтобы начать отслеживание)

Изменение статусов файлов:

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

  1. Добавление файлов:

    • Чтобы добавить файл в индекс - для отслеживания изменений (стейджинг-область) и подготовить его к фиксации commit, используйте:
      shell
      git add <имя_файла>
    • Для добавления всех измененных файлов используйте точку add .:
      shell
      git add .
  2. Удаление файлов:

    • Чтобы удалить файл из рабочей директории и отслеживания изменений, используйте:
      shell
      git rm <имя_файла>
  3. Изменение отслеживаемых файлов:

    • Если вы хотите отключить отслеживание файла, который уже находится в репозитории, используйте:
      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 - визуал студия код результат созданных файлов может быть следующим:

img.png

Вывод 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 - новые изменения файла":

img_1.png

Редактор кода отслеживает состояние репозитория, подсвечивает и подписывает буквами состояние фалов:

  • 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>

В итоге получаем файлы в четырех базовых состояниях в репозитории:

  1. file_4_stage.txt: Staged - добавленные в промежуточное состояние файл перед фиксацией commit, позволяет выборочно фиксировать изменения.
  2. file_3_modified.txt: Modified - ранее зафиксированный файл, изменённый, но не добавлен в отслеживание stage.
  3. file_1_untracked.txt: Untracked - не отслеживаемый гитом файл.
  4. file_2_unmodified.txt: Unmodified - ранее зафиксированный файл, и далее не изменённый файл.

Практика:

  1. Проверяем текущий статус файлов через git status.
  2. Добавляем необходимые файлы в stage с помощью команды git add.
  3. Создаем коммит через git commit.

Contacts: teffal@mail.ru