Задать вопрос

В чем разница Changes not staged for commit и Untracked files (команда git add)?

Изучаю гит.
Возник вопрос по Changes not staged for commit, Untracked files и команде git add.
(не рассматриваем вопрос аллиасов позволяющих коммитить одной командой)

Вопрос простой, но вот в чем недопонимание:

Я создал файл file1.txt
git status - Untracked files: file1.txt
git add file.txt
Changes to be committed: file1.txt
git commit...
Всё хорошо. Добавил, закоммитил.

Далее я изменил файл file1.txt
git status - Changes not staged for commit: file1.txt
То есть его надо снова добавлять git add - ясно.

Далее я создал файл file3.txt
git status - Untracked files: file3.txt

Итого git add добавляет в индекс и Changes not staged for commit и Untracked files.
И в чем тогда разница?
И новый файл и уже существующий, с изменениями, невозможно закоммитить без git add.

Смысл их делить на Changes not staged for commit и Untracked files?
Что там новые изменения в файлах, что тут новый файл.
  • Вопрос задан
  • 6099 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • ProductStar
    Python + Flask + Git: веб-разработка с нуля
    2 месяца
    Далее
  • Учебный центр IBS
    DEV-007 Введение в систему контроля версий Git
    1 неделя
    Далее
  • Stepik
    Git (система контроля версий)
    1 неделя
    Далее
Решения вопроса 2
Krasnodar_etc
@Krasnodar_etc
fundraiseup
Untracked files - файл ещё не был добавлен в репозиторий, изменения в нём не отслеживаются, гит видит только факт появления нового файла с кодом. Можете добавить такие файлы в .gitignore и они не попадут в репозиторий, в отличии от tracked files

Changes not staged for commit - изменения в этих файлах ещё не были добавлены в индекс для следующего коммита.

Это просто логическое разделение сущностей. Для git add . разницы нет
Ответ написан
Комментировать
sergey-kuznetsov
@sergey-kuznetsov Куратор тега Git
Автоматизатор
Untracked — неотслеживаемый файл, Git им не управляет. Он может быть не только новым, но и очень старым.
Changes not staged — файл под управлением Git и был изменён в рабочем каталоге.

Разница существенная. Например состояние этих групп файлов сбрасываются разными командами. Команда reset или checkout работает только с отслеживаемыми файлами, а например удалить неотслеживаемые можно только через clean
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
Made In Dream Санкт-Петербург
от 100 000 до 220 000 ₽
от 250 000 до 320 000 ₽