Как с помощью git добавить новый файл, не создавая его?

Чтобы использовать 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
44
задан bitmask 18 June 2012 в 16:50
поделиться