为什么`git add -p`不暂存未跟踪的文件?

dim*_*mid 3 git

我创建了一个新文件foo.rb

$ git add -p foo.rb

$ No changes.

但是,添加没有用-p。这是错误还是功能?我希望它可以让我暂存文件的某些部分。

pok*_*oke 5

git add --patch 记录如下:

这可以有效地运行add --interactive,但绕过初始命令菜单,而直接跳转到patch子命令。

并且git add --interactive描述为仅添加修改后的更改:

以交互方式将工作树中的修改内容添加到索引。

所以不,这种行为是设计使然。

无论如何,使用修补程序添加新文件没有多大意义,因为整个文件添加都是一个单一的块,可以暂存或不暂存(或者您必须手动编辑修补程序)。所以无论是git add foo.rb不是。

您可以使用git add --intent-to-add filegit add -N file简称悬停添加一个空文件。这将暂存一个具有该文件名的空文件,因此,下次运行时git add -p,该文件已为人所知,并提供了一个实际的补丁程序。