こんにちは!ゆきまさです!!(@yyykms)
今回は「git add」やオプションについて説明したいと思います。
git add コマンドはよく使うと思いますが、詳しい動きや内部でどんなことをしているかはよくわからない人は参考にしてください!
git add とは?
git add はワーキングツリーからステージングエリアに追加するコマンドです。

addする目的としては、ワーキングツリーから直接ローカルリポジトリにコミットしてしまうと、「変更したけどコミットしたくないファイル」も含まれてしまいます。
なので、必要なファイルだけをステージングエリアに反映させてからコミットをすることによって、コミットをする必要の無いファイルを除くことができるのです。
ワーキングツリー:Gitの管理下で実際に作業をしているディレクトリのことです。
ステージングエリア:ローカルリポジトリにコミットするファイルを置いておくエリアのことです。
ステージングに追加する
変更したファイルをステージングエリアに追加するのは、基本的にファイル名を指定することで追加できます。
$ touch test.txt
$ git add test.txt
しかし、git add には様々なオプションがあり、それによって追加するファイルの操作を行うことができます。
git add のオプション
git add には便利なオプションが多く存在するので、いくつか紹介したいと思います。
オプション | 意味 |
---|---|
-A --all | 「変更/追加/削除」したファイルをステージングに追加 |
.(ドット) | 「変更/追加/削除」したファイルをステージングに追加 |
-u --update | 「変更/削除」したファイルをステージングに追加 |
-i --interactive | 変更したファイルを対話的にステージングに追加 |
*(ワイルドカード) | 特定の名前が含まれているファイルをまとめて指定 |
-n --dry-run | 実際にはステージングには追加せず、追加するファイル名を一覧表示する |
-p --patch | 変更したファイルの一部を対話的にステージングに追加 |
-f --force | .gitignore で設定したファイルもステージングに追加 |
-N --intent-to-add | 実際にはステージングには追加されず、追加されるという事実のみを記録する |
git add -A
-A
オプションは --all
の省略形です。
「変更/追加/削除」したファイル全てをステージングエリアに追加します。
git add .
.(ドット)はカレントディレクトリ以下の「変更/追加/削除」したファイル全てをステージングエリアに追加します。
-A はカレントディレクトリ以外の git 管理下の全てを対象としますが、.(ドット)はカレントディレクトリ以下のみが対象となります。
git add -u
-u
オプションは --update
の省略形です。
「変更/削除」したファイル全てをステージングエリアに追加します。
-A や .(ドット)と違い、追加したファイルは対象になりません。
git add -i
-i
は --interactive
の省略形です。
変更されたファイルを対話的にステージングエリアに追加します。
コマンドを実行するとインタラクティブモードになり、指定したファイルだけだったり、指定したファイルのハンク(変更のひとかたまり)だけをステージングエリアに追加することなどができます。
普通に add するのに比べて操作が多く複雑なので覚えるまでは大変ですが、使いこなせるととても便利なので、是非使ってみてください!
git add *.html
git add ではワイルドカードとして *(アスタリスク)が使用できます。
ワイルドカードは特定の名前が含まれているファイルをまとめて指定することができます。
git add *.html とすることで、末尾に .html が含まれるファイルを全て指定することができます。
git add -n
-n
は --dry-run
の省略形です。
実際にファイルをステージングエリアには追加せずに、追加するファイル名を一覧表示することができます。
今の所このコマンドの使いどころがわかりませんが、このようなコマンドがあるんだな程度でいいと思います。笑
表示するだけなので実際にはステージングエリアに追加されません。
git add -p
-p
は --patch
の省略形です。
変更されたファイルの一部を対話的にステージングエリアに追加します。
コマンドを実行するとインタラクティブモードになり、ハンク(変更のひとかたまり)ごとに操作を行えます。
変更されたファイルをステージングエリアに追加する前に変更差分を確認できるのでとても便利です。
以下は git add -p を実行した時のコマンドです。
- y : このハンクをステージングする
- n : スキップする
- q : 終了する
- a : 以降のハンクをすべてステージングする
- d : 以降のハンクをすべてスキップする
- g : 指定したハンクへ移動
- / : 正規表現によるハンクの検索
- j : 未確定な前のハンクへ移動する
- J : 前のハンクへ移動する
- k : 未確定な次のハンクへ移動する
- K : ハンクへ移動する
- s : ハンクを分割する
- e : 手動で現在のハンクを修正する
- ? : ヘルプを表示する
git add -f
-f
は --force
の省略形です。
.gitignore で設定したファイルもステージングエリアに追加します。
git add -N
-N
は --intent-to-add
の省略形です。
実際にはステージングエリアには追加されないが、追加されるという事実のみが記録されます。
このコマンドは主に、新規ファイルを git diff で確認するときに使用します。
新規ファイルは git で管理されていないため、 git diff では確認することができません。
そこで、git add -Nによって「実際にはステージングにはないが、追加されるファイル」という状態になるので、git diff で新規作成したファイルを確認できるようになります。
また、追跡されていないファイルをGitに「認識」させるので、git commit -aを使用してコミットすることもできます
まとめ
以上が git add についてでした!
知らないオプションが多くて驚きましたが、理解して使いこなせればどれも便利だなと思いました!
ぜひ使ってみてください!