質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Q&A

解決済

3回答

44386閲覧

gitでローカルで削除したファイルを元に戻したいとき

redara

総合スコア344

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

0グッド

1クリップ

投稿2016/05/11 01:29

gitでローカルで削除したファイルを元に戻したいとき
いつも下記のコマンドを使っていますが、

git checkout HEAD -- 削除したファイル名

よくわかっていません。
checkoutコマンドはブランチを移動するコマンドという認識なのですが、
なぜ上記のコマンドでファイルが元に戻るのでしょうか。

それと、ファイル名を指定せず、消したファイルをすべて戻したいときは
ルートのディレクトリで
git checkout HEAD -- .
と、コマンドを叩いていますが、
合っているでしょうか?

また、他に削除したファイルを戻す一般的な良いやり方はあるでしょうか

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

git reset --hard HEAD
のような感じですれば、削除したファイルも復元できそうですけど、
この場合、ワーキングツリーの内容が全て元に戻ってしまうため、
ファイル指定したい場合は、やはり checkout で正解じゃないでしょうか。
Gitは奥が深く難しいですね。。。

投稿2016/05/11 03:17

root_jp

総合スコア4666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

Gitのドキュメントを見ると、git checkoutコマンドの説明として

Updates files in the working tree to match the version in the index or the specified tree.

作業ツリー上のファイルを、【インデックス上のマッチしたバージョン】または指定したツリーに変更します。

とあります。
("ツリー"とはブランチのこと、と思っていただいて構いません(厳密には異なりますが))
https://git-scm.com/docs/git-checkout

つまり、

checkoutコマンドはブランチを移動する

だけのコマンドではないということです。

また、

他に削除したファイルを戻す一般的な良いやり方はあるでしょうか

については、他にあるかもしれませんが、私には思いつきませんね。。

投稿2016/05/11 02:09

KiyoshiMotoki

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

gitの場合、「ファイルを削除した」ということも履歴として記録されるので、ファイルを消す前のコミットをcheckoutすれば、そのコミット時点での状態、つまり「ファイルを削除する前の状態」となります。

GitをGUIから操作することもちょくちょくありますが、間違えて削除した場合に「変更を破棄」として戻すというのも、考えれば理解できるのですが…あまり直感的ではないですね。

投稿2016/05/11 01:44

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問