В чем разница 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?
Что там новые изменения в файлах, что тут новый файл.
Untracked files - файл ещё не был добавлен в репозиторий, изменения в нём не отслеживаются, гит видит только факт появления нового файла с кодом. Можете добавить такие файлы в .gitignore и они не попадут в репозиторий, в отличии от tracked files
Changes not staged for commit - изменения в этих файлах ещё не были добавлены в индекс для следующего коммита.
Это просто логическое разделение сущностей. Для git add . разницы нет
Untracked — неотслеживаемый файл, Git им не управляет. Он может быть не только новым, но и очень старым. Changes not staged — файл под управлением Git и был изменён в рабочем каталоге.
Разница существенная. Например состояние этих групп файлов сбрасываются разными командами. Команда reset или checkout работает только с отслеживаемыми файлами, а например удалить неотслеживаемые можно только через clean