これがあなたのワークフローであると仮定します:
- ファイルをコミットしました
- あなたはいくつかの変更を加えてそれを上演しました
- さらにいくつかの変更を加えましたが、手順2で段階的に変更したバージョンに戻したいと考えています。
を実行する必要がありますgit checkout -- A
。これにより、ステージングされていない変更はすべて削除されますが、ステップ2の終了時に変更が保持されます。
物事をクリアするこのワークフロー例を見てください。
Aの内容はただversion1
$ echo "version1" > A
変更をコミットします$gitadd A && git commit -q-m'初期コミット'
$ git log
commit 4fd90642df048ca4beeb29c65c5f7a436e83055a
Author: Tuxdude <foo@bar>
Date: Fri Mar 8 16:28:36 2013 -0800
initial commit
Aの内容は現在version2
$ echo "version2" > A
$ cat A
version2
ファイルの変更をステージングする
$ git add A
現在のgitステータスを確認する
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: A
#
にさらに変更を加えるA
$ echo "version3" > A
$ cat A
version3
ここで、`Aのローカルのステージングされていない変更を削除することにしました。gitのキャッシュ、つまりステージング領域からファイルをチェックアウトする必要があります。
$ git checkout -- A
$ cat A
version2
git status
もう一度実行すると、段階的な変更について通知されます。
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: A
#