为了有效地使用 git(如其原意),我会进行小的原子提交,尽管我也有更长的工作时间,在这些时间中需要修改不止一件事情。因此,我经常使用
我想要做的是告诉 git 存在一个新文件需要跟踪,但并不需要将其加入暂存区:
例如,运行
我希望它只能进入B部分,这样我可以稍后使用
编辑
关于
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
如果我在C部分有一个文件foo
,并使用git add foo
命令,它将进入A部分。如果我使用git add -N foo
命令,它会同时进入A和B两个部分。但是,这意味着它将被包括在下一次提交中,至少作为有一个新文件的事实。我希望它只能进入B部分,这样我可以稍后使用
git add -p
或git add foo
(或其他命令)将其添加到A部分。编辑
关于
add -N
解决方案,这不起作用,因为如果我在说了add -N
但没有正确添加它之后尝试提交,git会抱怨,因为它不知道如何处理空文件:foo: not added yet
error: Error building trees
git add foo
+git reset HEAD foo
,但事实证明reset
命令会将新文件移回到 C 区而不是旧文件的 B 区。真气人... - Andras Nemeth