sato.masaki

2013.07.18

Gitの取り消す操作

こんにちは。monipla for facebookを担当している佐藤(ま)です。
アライドでは「大佐」と呼ばれております。

今回は、Gitの「取り消す操作」について書きたいと思います。

調べてみるとたくさん記事が出てくるのですが、コマンドだけという記事も多いので、ここでは、コマンドの結果をできるだけSource Treeの画面で確認していく形で進めていきたいと思います。
(Source Treeの画面操作だけでも同様のことはできますが。)

◇ リポジトリ構成
今回は以下のようなリポジトリを用意しました。

コミット履歴

◇ コミット前の変更を取り消す
1. 編集したワーキングツリーのファイルをコミットに戻す

※ またsrcディレクトリ内の編集したファイルをすべて戻したい場合はディレクトリを指定すればOKです。

2. インデックス ⇛ ワーキングツリーへ戻す
git resetコマンドを使います。上記のA.txtをインデックスへ入れた状態の場合、上記コマンドでの取り消しはできません。インデックスからワーキングツリーへ戻す場合は、以下のコマンドとなります。

Source Treeでいうと、ここのエリアを行ったり来たりしているのと同じですね。

また、git resetコマンドには、「–soft , –mixed[no option] , –hard」というオプションがあり、インデックスに入れた変更をワーキングツリーではなくコミットに戻す場合には「–hard」オプションを使います。

◇ コミット後の変更を取り消す
ここでも git reset コマンドを使います。ここでは「–soft , –mixed[no option] , –hard 」オプションすべての実行結果を、「C」のコミットに戻す操作で確認してみます。

1. –soft

「C」のコミットまで戻り、それまでの変更はステージングエリアに入ります。
(既にインデックスやワーキングツリーに変更があった場合はそのままです。)

2. –mixed(no option)

「C」のコミットまで戻り、それまでの変更はワーキングツリーに入ります。
(既にインデックスに変更があった場合は同時にワーキングツリーへ移動します。)

3. –hard

「C」のコミットまで戻り、それまでの変更はインデックス、ワーキングツリーから削除されます。

◇ 特定のコミットを取り消す
過去にコミットした特定のコミットを取り消す場合などには、以下のコマンドを使います。

「C」のコミットが取り消され、新しくコミットされます。

Gitには便利なコマンドが揃っているので、他にも色々確認して行きたいと思います。

ではまたー