ステージングの変更を確認する

具体例として、上で作成したリポジトリ内のファイル 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")

となり、インデックスに何も追加されておらず、インデックスへの追加が取りやめられたことがわかります。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Linux 入門