2016-04-09 1 views
2

Я учусь мерзавца и пришли к this exercise:Почему учебное упражнение предупреждает, что git commit -am недостаточно для добавления моего нового .gitignore в репозиторий, хотя git явно добавил его?

Commit файл .gitignore в репозиторий. Подсказка: Запуск git commit -am не достаточно. Почему нет?

Я сделал git commit -am и этого, кажется, достаточно.

[email protected]:~/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") 
[email protected]:~/repos/website$ git add . 
[email protected]:~/repos/website$ ls 
images index.html README.md 
[email protected]:~/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 

[email protected]:~/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 
[email protected]:~/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 не хватает?

ответ

2

Это не случай, когда вы сделали что-то не так. git commit -am добавляет все отслеживаемые файлы в сообщение с сообщением, заданным как параметр, m. У вас (возможно, автоматически) был выполнен git add . до этой команды, который добавляет не проверенные файлы из текущего каталога вплоть до фиксации.

Для большей четкости отслеженный файл представляет собой файл, который Git уже отслеживает изменения, в то время как неподписанный файл является тем, что Git видит, но не имеет истории. Просто запуск git commit -a сам по себе не добавит новые файлы в репозиторий, а просто зафиксирует изменения в файлах, о которых уже знает Git.

1

От человека страницы мерзавца фиксация:

-a --all

Скажите команду автоматически постановки файлов, которые были изменены и удалены, а новые файлы, которые вы не сказали Git about не затронуты.

Таким образом, команда регистрирует изменения уже отслеженных файлов. Что вы сделали «правильно» (не «неправильно»), так это то, что вы использовали git add, чтобы добавить новый файл.