git ready

learn git one commit at a time
by Nick Quaranto, O-Show(@oshow)

ファイルの変更を取り消す

committed 11 Jan 2009

このトピックでは常々多くの Git ユーザを惑わせている源について触れる。そもそもこの混乱は「何かを達成する方法は一つではない」という所から来ている。では、作業をやり直しする時に必要になる基本的なコマンドを見なおしてみよう。

一つのファイルを元の状態に戻したいとする。次のコマンドだ。

git checkout <file>

これの問題点は、ファイル名と同じブランチ名が存在するかもしれないことだ。checkout コマンドは変更の取り消しとブランチの切り替えの両方に使われるため、以下の構文を知っておく必要がある。こうすれば、ブランチ名ではなくファイル名を指定しているのだと Git に伝えることができる(ありがとう、"Norbauer":http://norbauer.com/notebooks/code/notes/git-revert-reset-a-single-file )。

git checkout -- <file>

もし作業していた変更を全て捨ててしまいたいなら、2つの方法がある。

git checkout -f or git reset --HARD

上記コマンドを実行すると、ワーキングディレクトリ中の未コミットな変更は全て失われる。使う時は十分注意をしよう。

また ‘git revert’ は ‘svn revert’ とは全然関係がない 事に気を付けよう! git-revert は過去のコミットを取り消すための逆コミットをするのに使われる。これについては今後のトピックで扱いたいと思う。