ステージングの変更を確認する
具体例として、上で作成したリポジトリ内のファイル app1.c を次のようなファイルであったとします。
#include <stdio.h>
int main(){
printf("Hello, world!\n");
return 0;
}
そして、この "Hello, world!" という文字を "Hello, Git!" に変更します。このときにこの変更が Git でどのようにみえるか確認してみましょう。
変更を確認するには git status というコマンドを利用します。
app1.c を変更したがインデックスに追加もコミットもしていない場合は、次のように表示されます。
$ git status # On branch master # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: app1.c # no changes added to commit (use "git add" and/or "git commit -a")
そこでまず、インデックスに追加 (git add) して再度ステータスを確認しましょう。
$ git add app1.c $ git status # On branch master # Changes to be committed: # (use "git reset HEAD..." to unstage) # # modified: app1.c #
次にコミットしてステータスを確認します。
$ git commit -m "Changed Message" [master 7bcca35] Changed Message 1 files changed, 1 insertions(+), 1 deletions(-) $ git status # On branch master nothing to commit (working directory clean)
まだコミットしていない変更を取りやめる
インデックスに追加したが、まだコミットしていない変更を取りやめるには、 コマンド git reset HEAD -- ファイル名 が利用出来ます。
具体例をみてみましょう。
まず foo.c をインデックスに追加します。
$ git add foo.c $ git status # On branch master # Changes to be committed: # (use "git reset HEAD..." to unstage) # # modified: foo.c #
確かに "Changes to be commited" に foo.c が含まれました。そこで、次のコマンドを実行します。
$ git reset HEAD -- foo.c Unstaged changes after reset: M foo.c
もう一度ステータスを確認すると・・・
$ git status # On branch master # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: foo.c # no changes added to commit (use "git add" and/or "git commit -a")
となり、インデックスに何も追加されておらず、インデックスへの追加が取りやめられたことがわかります。