記事の目的
- git add コマンドについて記載
- 追跡対象になっているファイルについて記載
本文
すでに追跡対象となっているファイルを変更した場合
- 追跡対象となっているファイル CONTRIBUTING.md を変更する。
- その後に git status コマンドを実行する。
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: README
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working
directory)
modified: CONTRIBUTING.md
-
分かること
CONTRIBUTING.md ファイルは"Changed but not staged for commit"という欄に表示されます。これは、追跡対象のファイルが作業ディレクトリ内で変更されたけれどもまだステージされていないという意味です。
ステージするには "git add"が必要 -
"git add"のいろんな意味合い
・新しいファイルの追跡開始
・ファイルのステージング
・マージ時に衝突(コンフリクト)が発生したファイルに対する「解決済み」マーク付けなどで使用
"使用したファイルをプロジェクトに追加(add)する"コマンド、というよりは、"指定した内容を次のコミットに追加(add)する"コマンド、捉えたほうがいい。
git add で CONTRIBUTING.md をステージして git status を実行したら
$ git add CONTRIBUTING.md
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: README
modified: CONTRIBUTING.md
両方のファイルがステージされました。
これで、次回のコミットに両方のファイルが含まれるようになります。
CONTRIBUTING.md にちょっとした変更を加えてからコミットしたくなった場合
- ファイルを開いて変更を終え、コミットの準備が整いました。
- ここで、 git status を実行してみると...なんか変です。
$ vim CONTRIBUTING.md
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: README
modified: CONTRIBUTING.md
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working
directory)
modified: CONTRIBUTING.md
- CONTRIBUTING.md が、ステージされている方とステージされていない方の両方に登場しています。
- Gitは、「 git add コマンドを実行した時点の状態のファイル」をステージするということ。
- ここで、コミットをすると git add を実行した時点の CONTRIBUTING.md になってしまいます。
git add した後にファイルを変更した場合
- 最新版のファイルをステージし直すにはもう一度 git add を実行します。
$ git add CONTRIBUTING.md
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: README
modified: CONTRIBUTING.md