Чтобы эффективно использовать 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
, он перейдет к разделу A. Если я скажу git add -N foo
, он перейдет к A и B. Однако это будет означать, что он будет включен в следующую фиксацию, по крайней мере, как факт, что есть новый файл.
Я хочу, чтобы это было в разделе B исключительно, чтобы впоследствии добавить его в с помощью git add -p
или git add foo
(или что-то еще).
Изменить
Что касается решения add -N
, это не сработает, потому что если я попытаюсь зафиксировать после того, как сказал add -N
и не добавил его правильно, git жалуется, потому что он не знает, как обрабатывать пустые файлы:
foo: not added yet
error: Error building trees