为什么 `git commit -am` 命令正在处理未跟踪的文件(在文档的示例中)?

Why the `git commit -am` command is working with untracked file (in the documentation's samples)?

我经常在 Git 文档中看到类似 this:

的内容
$ git clone john@githost:simplegit.git
Initialized empty Git repository in /home/john/simplegit/.git/
...
$ cd simplegit/
$ vim lib/simplegit.rb
$ git commit -am 'removed invalid default value'
[master 738ee87] removed invalid default value
 1 files changed, 1 insertions(+), 1 deletions(-)

来自the documentation

-a
--all

Tell the command to automatically stage files that have been modified and deleted, but new files you have not told Git about are not affected.

注意,lib/simplegit.rb 文件在一次创建时未被跟踪。它为什么跟踪 -a 选项?我将 Git 用于 Windows 并且当我尝试执行类似操作时此示例不起作用:

bushm@DESKTOP-ISD2NUH MINGW64 /d/src/sample
$ git init
Initialized empty Git repository in D:/src/sample/.git/

bushm@DESKTOP-ISD2NUH MINGW64 /d/src/sample (master)
$ vim ./text.txt

bushm@DESKTOP-ISD2NUH MINGW64 /d/src/sample (master)
$ git commit -am "First commit"
On branch master

Initial commit

Untracked files:
        text.txt

nothing added to commit but untracked files present

bushm@DESKTOP-ISD2NUH MINGW64 /d/src/sample (master)

更新:使这令人困惑的文档部分是 fixed in PR #414 作者 Matthieu Moy


这可能只是示例中的一个错误。

首先,你是对的。 -a 仅添加修改和删除的文件。

其次,当你克隆一个 repo 时,git 不会说

Initialized empty Git repository in /home/john/simplegit/.git/

而是显示

Cloning into 'simplegit'...
remote: Counting objects

和其他一些行。

第三,在例子中

# John's Machine
$ git clone john@githost:simplegit.git
Initialized empty Git repository in /home/john/simplegit/.git/
...
$ cd simplegit/
$ vim lib/simplegit.rb
$ git commit -am 'removed invalid default value'
[master 738ee87] removed invalid default value
 1 files changed, 1 insertions(+), 1 deletions(-)

可以看到commit message是'removed invalid default value',这意味着它正在修改一个被跟踪的文件。

我认为作者只是结合了一些东西,所以他可以展示一个清晰的例子。

如果他省略了 Initialized empty Git repository in /home/john/simplegit/.git/

这行会更好