为什么 `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(-)
-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/
这行会更好
我经常在 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(-)
-a
--allTell 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/