我正在学习git并且来到this exercise:
将
.gitignore
文件提交到您的存储库。提示:运行git commit -am
是不够的。为什么不呢?
我已经完成了git commit -am
,这似乎已经足够了。
michael@michael:~/repos/website$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: breaching_whale.jpg
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
no changes added to commit (use "git add" and/or "git commit -a")
michael@michael:~/repos/website$ git add .
michael@michael:~/repos/website$ ls
images index.html README.md
michael@michael:~/repos/website$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: .gitignore
deleted: breaching_whale.jpg
michael@michael:~/repos/website$ git commit -am "Add gitignore"
[master e7cc08c] Add gitignore
2 files changed, 1 insertion(+)
create mode 100644 .gitignore
delete mode 100644 breaching_whale.jpg
michael@michael:~/repos/website$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working directory clean
你能猜测我做错了什么,并帮助我理解教程中的含义以及为什么git commit -am
还不够?
答案 0 :(得分:2)
这不是你做错了什么的情况。 git commit -am
将所有跟踪的文件添加到提交中,并将消息作为参数提供给m
。您在此命令之前已经(可能自动)执行了git add .
,它将当前目录中未跟踪的文件添加到提交中。
为清楚起见,跟踪文件是Git已经监视更改的文件,而未跟踪文件是Git可以看到的但没有历史记录的文件。只运行git commit -a
本身不会将新文件添加到存储库,而只是将更改提交给Git已经知道的文件。
答案 1 :(得分:1)
来自git-commit的手册页:
-a --all
告诉命令自动暂存已修改和删除的文件,但是没有告诉Git的新文件不会受到影响。
因此该命令仅记录对已跟踪文件的更改。
你“正确”(而不是“错误地”)做的是你使用git add
添加新文件。