Чтобы использовать git эффективно (и по назначению), я делаю небольшие атомарные коммиты, в то время как у меня есть более длительные сеансы, когда я меняю не только одну вещь. Поэтому я активно использую git add -p
. Однако это не работает для совершенно новых файлов, потому что я обычно забываю их позже.
Что я хочу сделать, так это сообщить git
, что естьновый файл, я хочу, чтобы он отслеживался, но не подготавливался:
Пример: Запуск git status
дает:
# On branch my-current-branch
# Your branch is ahead of 'origin/my-current-branch' by 2 commits.
#
# Changes to be committed:
#
<<STAGED SECTION>> // A
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
<<UNSTAGED-YET-KNOWN SECTION>> // B
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
<<UNKNOWN SECTION>> // C
Если у меня есть файл foo
в разделе C, и я говорю git add foo
, он перейдет к раздел А. Если я скажу git add -N foo
, он перейдет и к A, и к B. Однако это будет означать, что он будет включен в следующую фиксацию, по крайней мере, как тот факт, что есть новый файл.
Я хочу, чтобы он помещался исключительно в раздел B, чтобы позже я мог добавить его в A с помощью git add -p
или git add foo
(или что-то еще).
Что касается решения add -N
, это не работает, потому что, если я попытаюсь зафиксировать после того, как сказал add -N
и notдобавив его правильно, git жалуется, потому что он не знает, как обрабатывать пустые файлы:
foo: not added yet
error: Error building trees