Gitを使ってファイルを元に戻す話
これまでの作業は、一方的に編集を記録してましたが、
git checkout
を使って、編集状態を元に戻す方法を学びましょう。
まず、ブランチの切り替えに使ったときのことを思い出します。
$ git checkout <branch name>
これで、ブランチを切り替えると同時に、
そのブランチにおける最新の状態を復元することができます。
ですが、編集中のファイルが存在する時に実行するとどうなるでしょうか?
使用するフォルダ構成は以下の通りです。
Project └── Work
まずは、リポジトリを初期化して、適当なファイルをコミットします。
$ cd Project/Work
$ git init
$ echo foo >> readme.txt
$ git add readme.txt
$ git commit -m "初回コミット"
次に、新しいブランチ上で、”readme.txt”を編集してみます。
$ git checkout -b topic
Switched to a new branch 'topic'
$ echo bar >> readme.txt
$ cat readme.txt
foo
bar
そして、masterブランチに切り替えてみます。
$ git checkout master
すると、同時に以下のような出力が行われました。
M readme.txt
これは、編集によってmasterブランチの最新と異なることを意味しています。
ファイルを開き直しても、編集が行われたままであることが確認できます。
このように、変更状態のファイルはブランチを切り替えても変更されません。
ところで、この現在の変更を破棄するにはどうしたら良いでしょう?
もちろん、先ほどの変更を編集して元に戻す方法もありますが、
せっかくなので、Gitを使って元に戻したいと思います。
まず、masterブランチにおける最新の状態との差分を見てみましょう。
$ git diff --color readme.txt
diff --git a/readme.txt b/readme.txt
index 257cc56..3bd1f0e 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1 +1,2 @@
foo
+bar
--color
を付けることで、
追加された行と削除された行が色分けされて表示されます。
この他の方法として、git gui
を使うのもオススメです。
変更内容の確認は終わりです。
では、さっそく変更内容を破棄します。
$ git checkout readme.txt
これで、変更は破棄されました。
差分の確認方法は、先ほど説明した通りです。
git diff
を行っても、もう何も出力されないはずです。
次に、もう必要のないブランチを削除します。
$ git branch -d topic
これで、きれいさっぱり元に戻りました。
めでたし、めでたし。
Leave a Comment