2012-06-25 17 views
11

私はSVNからGITへの移行中で、回答が見つからない質問があります。 私は、SVNを介していくつかのオープンソースプロジェクトを扱うときの通常のシナリオについて説明します。リポジトリから削除したファイルを復元する

  1. ファイルをいじりチェックアウト
  2. スタートを作り、プロジェクトがどのように動作するかをテストするために、変更を行います。
  3. p.2以降、一部のファイルが大きく変更されてしまい、元の状態に戻る機会がありません。
  4. "rm filename.cpp"ディスクから変更したファイルを削除し、 "svn update"コマンドを実行して、元のファイルがすべて元に戻ります。

これは、p.4以外のGITでも同様です。私は "git pull"をしようとすると、プロジェクトは最新であり、ローカルフォルダにないにもかかわらず元のファイルが得られないという。

p4の正しいコマンドはgitを扱うときです。 Thxを現在のブランチ(またはHEAD)をチェックアウトする

+1

が重複する可能性[私は以前の状態にファイルを復元するにはどうすればよいですgit?](http://stackoverflow.com/questions/35284/how-do-i-restore-files-to-previous-states-in-git) –

答えて

10

試してみてください。

git checkout HEAD 

それとも、最後にコミットさ状態(警告にすべてを戻したい場合:これは恒久的にすべての未コミットの変更を削除します!)、あなたはまた、ハードリセットできます。最も簡単な方法は、の出力に示されている

git reset --hard 
+0

どちらも動作していません。いくつかのファイルを削除します。チェックアウト後、ファイルにDフラグが付いていると表示され、何も起こりません。私がリセットすれば、私は必要のない嘆願要求があり、何も起こらないと言います。私が引っ張ってみると、ファイルは最新であると言われていますが、削除されたファイルはまだ失われています。 – Eugen

+0

申し訳ありません、リセットのようです - ハードが正しく動作しています。 Thx – Eugen

10

0:

git checkout -- file 

ここで、fileには削除されたファイルの名前を指定できます。 これは、削除されたファイルを回復し、他のファイルに影響を与えません。

+0

でも、リストアしたいファイルが10個あり、名前が覚えていない場合はどうすればいいですか? – Eugen

+0

'git status'はすべての変更された/削除されたファイルの名前を教えてくれます – madth3

+1

また、フォルダを削除した場合、/ src/testを実行し、その下にたくさんのファイルがあるとします。コマンド:git checkout - src/test – user204069

0

このケースではひどいですが、私はそれほど苦労して信じられません。

  1. クローンあなたは既存のローカルレポを持って 異なるローカルのHD上のいくつかの場所へのリモートレポ
  2. コピーに新しくクローニングされたレポから削除したファイル/ディレクトリ:ここで私はそれを行う方法があります
  3. が新しくクローニングされた地元のレポ

を削除するリモートレポにもプッシュを必要に応じて

  • 既存のローカルリポジトリは、既存のローカルリポジトリに変更をコミットし、なぜそれがshoul

  • 0

    これは私が何をするのかである...行ってこのような単純なタスクが私をエスケープ得るためにかかり、この複雑で時間をd:

    git reset HEAD <file-path> git checkout -- <file-path>