926

一部のファイルを削除しました。

私はまだコミットしていません。

ワークスペースをリセットしてファイルを復元したい。

私はしましたgit checkout .

しかし、削除されたファイルはまだありません。

そしてgit statusショー:

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   deleted:    cc.properties
#   deleted:    store/README
#   deleted:    store/cc.properties
#

git checkout .がワークスペースを にリセットしないのはなぜHEADですか?

4

24 に答える 24

862

出力は、何をする必要があるかを示します。git reset HEAD cc.properties

これにより、rm 操作がアンステージされます。その後、もう一度 a を実行すると、ファイルを元に戻すにgit statusは a を実行する必要があることがわかります。git checkout -- cc.properties

更新: 構成ファイルにこれがあります

$ git config alias.unstage
reset HEAD

私は通常、ステージングを解除するために使用します。

于 2012-08-14T16:29:32.557 に答える
234

削除をステージングしたので、次のことを行う必要があります。

git checkout HEAD cc.properties store/README store/cc.properties

git checkout .削除がすでにステージングされているインデックスからのみチェックアウトします。

于 2012-08-14T16:31:12.267 に答える
209

やるだけgit checkout path/to/file-I-want-to-bring-back.txt

于 2014-01-23T11:57:05.850 に答える
176

個別のパスを指定せずに、ステージングされていないすべての削除を一度に自動的に回復するには:

git ls-files -z -d | xargs -0 git checkout --

個別のパスを指定せずに、ステージングされたすべての削除を一度に自動的に回復するには:

git status | grep 'deleted:' | awk '{print $2}' | xargs git checkout --
于 2014-11-12T17:29:51.137 に答える
90

を行っているgit checkout .ため、ブランチを最後のコミット状態に戻そうとしているようです。

あなたはでこれを達成することができますgit reset HEAD --hard

警告

これを行うと、最新の変更がすべて削除され、変更のステージが解除される可能性があります。たとえば、作業が失われる可能性があります。それはあなたが望むものかもしれませんが、ドキュメントをチェックして確認してください。

于 2012-12-21T19:54:46.330 に答える
81

使用した場合

git rm filename

ファイルを削除するには

git checkout path/to/filename

動作しませんので、その場合

git checkout HEAD^ path/to/filename

動作するはずです

于 2016-03-31T15:21:10.767 に答える
23

一度にすべてのファイルを復元したい場合

すべてのファイルを取得するように git に指示するため、必ずピリオドを使用してください。

このコマンドは、ヘッドをリセットし、すべての変更のステージングを解除します。

$ git reset HEAD . 

次に、これを実行してすべてのファイルを復元します。

$ git checkout .

次に、git status を実行すると、次のようになります。

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
于 2015-02-10T14:39:55.950 に答える
9

これを見てもいいですか

それはあなたが使用した場合に当てはまります

git checkout -- .

何かをコミットする前に。

まだ作成されていない作成済みファイルを削除することもできます。そして、あなたはそれらを望んでいません。と :

git reset -- .
于 2016-09-02T15:38:15.533 に答える
6

変更をコミットしていない場合は、それらの変更を隠しておくだけで、最後に作業していたコミットに戻ります。

git stash
git stash clear
git clean 
于 2015-03-02T23:14:31.050 に答える
6

別のブランチからのマージ後に作業ディレクトリで削除されたファイルの削除を取り消す方法についての回答を探しているときに、この投稿を見つけました。マージ後、コミットはまだ行われていません。それは進行中のマージだったので、次を使用して元に戻すことはできませんでした:

$ git reset <commitid#-where-file.cpp-existed> file.cpp

ファイルを元に戻すには、リセットに加えて別の手順を実行する必要がありました。

$ git checkout -- file.cpp
于 2015-09-15T17:14:52.883 に答える
3

削除されたディレクトリを探している場合。

 git checkout ./pathToDir/*
于 2015-06-08T13:52:56.627 に答える
2

私にとってうまくいったのはgit checkout {SHA1 of commit with version to restore} "{path to file to restore}"

例えばgit checkout 5a6b3179e58edff9c90326b9a04284b02fd67bd0 "src-ui/views/includes/radar.pug"

(ファイルを入れたいブランチで実行)

そのコマンドが実行された後、復元されたファイルは元の場所に存在します (コミットする必要があります)。

于 2016-06-08T13:44:14.277 に答える
1

これは私にとって最も簡単な方法でした:

git checkout HEAD~1 path/to/myfile.rb

ここで見つけました。


私のためにも働いた別の方法:

git reset HEAD path/to/myfile.rb
git restore path/to/myfile.rb
于 2020-11-02T21:18:39.427 に答える
0

私は同じ問題を抱えていましたが、上記の解決策はどれもうまくいきませんでした。私がやったことは次のとおりです:
- 同じ名前の空のファイルを作成します
- このファイルをそのローカル履歴と比較します
- 履歴を空のファイルにコピーします。

于 2016-12-05T09:32:05.323 に答える