Gitに入門する -その2-

blog.takanabe.tokyo

ステップ2の「Gitを初めからていねいに」をやる。

「ひとりでつかう - にどめのコミット」より。


①git statusする

$ git status
On branch master
nothing to commit, working directory clean

作業ディレクトリとリポジトリに相違はない、とのこと。

②では相違を生み出そう。

作業ディレクトリにあるhoge.txtの中身をhogeからfugaに変更してみる。
その後、git statusする。

$ git status
On branch master
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:   hoge.txt

no changes added to commit (use "git add" and/or "git commit -a")

git addするとコミットできるようになり、
git checkoutすると作業ディレクトリの変更を破棄できる。

③git checkoutしてみる

$ git checkout -- hoge.txt

hoge.txtの中身を見るとさっきfugaに書き換えたのにhogeに戻ってやがる。

④git addしてみる

$ git status
On branch master
Changes to be committed:
 (use "git reset HEAD <file>..." to unstage)

       modified:   hoge.txt

変更はコミットされます。うんうん。
unstageするには、
"git reset HEAD ..."
しろと。さっきは
"git rm --cached ..."
だったのにメッセージが変わってやがる。

⑤とりあえず言われたままgit reset HEADしてみる

$ git reset HEAD hoge.txt
Unstaged changes after reset:
M       hoge.txt

とりあえずunstageされたようだ。
MはmodifiedのMらしい。
なぜ急に略したし。

⑥commitする!

先ほどgit reset HEADでunstageしてしまったので、

$ git add hoge.txt

してから、

$ git commit

する。
エディタが立ち上がるので変更点を明記して保存。
そうすると、

$ git commit
[master 3d3e14a] hogeをfugaに変更しました
1 file changed, 1 insertion(+), 1 deletion(-)

1つのファイルが変更されて、1行INSERTされて、1行削除されました。
無事コミット終了。

HEADってなんだったんだ。