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

时间:2015-09-15 07:51:21

标签: git git-commit

通常在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

     

告诉命令自动暂存具有的文件   已被修改和删除,但你没有告诉Git的新文件   关于不受影响

请注意,lib/simplegit.rb文件一旦创建就无法跟踪。是否跟踪了-a选项?我使用 Git for 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)

1 个答案:

答案 0 :(得分:3)

更新:Matthieu Moy在fixedPR #414提出了令人困惑的文档部分

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

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

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

  

/home/john/simplegit/.git /

中初始化的空Git存储库
相反,它说

  

克隆到' simplegit' ...
  remote:计算对象

和其他一些行。

第三,在示例中

# 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(-)

您可以看到提交消息为'removed invalid default value',这意味着它正在修改跟踪文件。

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

如果他遗漏了Initialized empty Git repository in /home/john/simplegit/.git/

这一行会更好