通过补丁添加时,有没有办法在 git 中添加未跟踪的文件?

Is there a way to add untracked files in git when adding via patch?

所以我正在学习 git add -p 的乐趣。作为 git add 的一部分,我曾经使用 Sourcetree 或类似的 GUI 工具来查看更改,但现在我在命令行上使用它变得更好了。

但是,我很沮丧,因为我无法在同一个命令中添加未跟踪的文件。如果有这样的选项,我会喜欢它:git add -p --include-untracked 然后像其他部分一样将它们视为补丁。

是否有更好的方法将其作为单个命令执行此操作?

我不知道有直接执行此操作的选项,似乎是缺少的功能。这里有一些解决方法。

您可以运行 git add --intent-to-add .-N 之前跟踪所有未跟踪的文件。这不会添加它们的内容,它们的更改将显示在 git add -p 中。您可以在 .gitconfig.

中将其添加为别名
[alias]
    addp = !git add -N . && git add -p

您可以使用交互模式,git add -i,以获得更好的控制,包括添加未跟踪的文件。

$ git add -i

*** Commands ***
  1: status       2: update       3: revert       4: add untracked
  5: patch        6: diff         7: quit         8: help
What now> 4
  1: foo
Add untracked>> 1
* 1: foo
Add untracked>> ^D
added 1 path

*** Commands ***
  1: status       2: update       3: revert       4: add untracked
  5: patch        6: diff         7: quit         8: help
What now> ^D
Bye.

$ git status
On branch master

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   foo