53623
git commit -aは`git add`したファイルのみすべてcommitされるのでしょうか？  
git addしていないものがcommitされることは基本ないという認識いいのでしょうか？
CC BY-SA 4.0
2019-03-21T11:15:17.607
53620
2019-03-25T08:36:14.723
2019-03-25T01:55:04.543
31799
31799
question
git
git commit -aについて
`man git-commit` によると、

> `-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.

すなわち、

> 変更か削除されたファイルを自動的にステージングしつつ、新しく追加した（そしてこれまでステージングされていない）ファイルはステージングしないようにします。

ということになります。よって、

## git commit -aはgit addしたファイルのみすべてcommitされるのでしょうか？

いいえ。 `add` していないファイルもステージングされ、commitされますが、新しく追加され、`git-
add`されていないファイルはcommitされません。

## git addしていないものがcommitされることは基本ないという認識いいのでしょうか？

はい。
CC BY-SA 4.0
2019-03-21T11:27:28.147
53623
2019-03-21T11:27:28.147
29826
53620
answer
「git addしたファイル」「git addしていないもの」が指す状態が少し曖昧ですが、 `git commit -a`
の意味合いとしては、バージョン管理対象となっているファイルについて、変更分を全て commit する、ということになります。

「git addした **ことがある** ファイル」「 **一度も** git addしていないもの」という意味合いであれば認識の通りです。

* * *

`git commit` コマンド実行時、コミットメッセージ編集画面で `Changes to be committed:`
という行以降に今回のコミット対象が出力されますので、今回の commit 操作が想定通りか確認することができます。  
( [`-v`](https://git-scm.com/docs/git-commit#Documentation/git-commit.txt--v)
オプションを追加して `git commit -av` というようにすると、差分も確認できます。)

あるいは、 `git commit -a` でなく、 代わりに[`git add -u`](https://git-scm.com/docs/git-
add#Documentation/git-add.txt--u) と `git commit` の2コマンドで行えば、 対象を確認してから commit
を実行できます。
CC BY-SA 4.0
2019-03-25T08:36:14.723
53714
2019-03-25T08:36:14.723
2808
53620
answer