git commit
コマンドの概要
インデックスの変更内容をローカルリポジトリに登録する。git commit
によりリポジトリに登録された状態がコミットとして管理される。コミットとコミットの差分を確認したり、いつでも任意のコミットの状態を復元できるようになる。
コミットの方法
インデックスにステージングされた変更をコミットするには
1$ git commit
git commit
を実行するとコミットメッセージ入力のためにエディタが起動する。何かコミットを選んで作業するときはコミットメッセージでコミットを特定することになるので、コミットメッセージは大事。
git commit -m"message"
でコミットと同時にメッセージを入力することもできる。
1$ git commit -m"first commit"
git log -oneline
でログを参照するときなどにはメッセージの 1 行目のみが表示されるので、1 行目にはそのコミットの概要が端的にわかる内容を記載し、次行以降でその詳細を記載したほうがよい。
インデックスにステージングされていない変更も含め、ワーキングツリー全体をコミットするときは、
1$ git commit -a
ただし、一度もgit add
されていないファイルはまだ Git の管理対象外のためコミットされない。過去のコミットに含まれるファイルの変更、削除については、git add
せずともgit commit
により"インデックス"にステージングされつつコミットされるが、前回コミット後に新規に追加されたファイルはgit add
により Git の管理対象する必要がある。
ファイルやディレクトリ、 . を指定してのgit commit
も可能だが、コミット予定としてインデックスへのステージングできちんと整理し、インデックスをコミットするべき。
コミットの上書修正
コミットを修正したいときに、現在のインデックスの内容でコミットを上書修正するのが
1$ git commit --amend
--amend
オプションをつけると、新しいコミットを作成するのではなく、前回コミットをインデックスの内容で修正する。
インデックスに修正を加えずにgit commit --amend
するとコミットメッセージの再入力が可能となるため、コミットメッセージの修正によく使われる。
古いコミットを破棄し現在の内容で新しくコミットするという動作をするため、前回コミット後にgit push
していた場合、git commit --amend
によりリモートリポジトリとの間で齟齬を生ずる点は注意。
関連するコマンド
git diff : ワーキングツリー、インデックスと指定したコミットの差分を確認する
git log : コミットのログを確認する
git reset : 指定したコミットに HEAD を移動させる / ワーキングツリー、インデックスに展開する。