2017-07-28 72 views
1

私はgitの新人です。私は、TFSやSourceGear Vaultのような集中化されたCVSに関する豊富な経験を持っています。gitで保留中の変更を元に戻す方法は?

私はgitをローカルで使用しています(リモコンなし)。今日私は、最後のコミット以来のすべての変更を取り返そうとすると、私のプロジェクトを完全に混乱させました。

私のリポジトリには、ドキュメント、VSプロジェクト、その他の開発品が保存されています。合計で数千のファイルがあります。

最後のコミット(変更を保留中の変更 TFSと言います)をgitでリポジトリ全体に戻すにはどうしたらいいですか? git resetgit checkoutは私のファイルを乱してしまったので、ファイルレベルのバックアップを使用しなければなりませんでした。元に戻すの変更によって

は私が意味:

  • が最後
  • は、最後の最後に記載されている

アイテムをコミットするので

  • 削除ファイルを追加コミットので、削除したファイルを追加コミットので、編集したファイルを元に戻します。 gitignoreファイルは影響を受けません。

    リポジトリレベルではなくフォルダ(+サブフォルダ)レベルでこのような復帰を行うことはできますか?

    ボールトを使用すると、ラベルフォルダ(+サブフォルダ)以降のラベル付き状態に戻ることができます。 gitでこれを行うことはできますか?

    もう1つの簡単な質問 - フォルダ内の削除済みファイルを表示し、必要に応じて(古いコミットから)復元できますか?私はgit stateまたはgit logでこれを行うことはできませんでした。

  • 答えて

    3

    gitを使ってリポジトリ全体の最後のコミット(元に戻すTFSの変更を元に戻す)に戻すにはどうすればよいですか? git resetとgit checkoutは私のファイルを乱してしまったので、私はファイルレベルのバックアップを使わなければなりませんでした。

    代替は、git checkoutことthe documentation見るでしょう:gitのチェックアウト - スイッチの枝をかは、ツリーファイル取り組んで復元します。たとえば、git checkout -- .は、現在のブランチからすべてのファイルをチェックアウトし、その状態を復元します。

    このような復元は、リポジトリレベルではなくフォルダ(+サブフォルダ)レベルで行うことはできますか?

    はい、git checkout -- path/to/folderです。

    Vaultではフォルダ(+サブフォルダ)にラベルを付けることができ、後でラベル付けされた状態に戻ることができます。 gitでこれを行うことはできますか?

    私はリポジトリ単位でtagsしか知りません。しかし、その特定のタグ(またはコミット)のフォルダをチェックアウトすることができます:git checkout tags/v1.0.3 -- pathまたはgit checkout commit -- path

    フォルダ内の削除済みファイルを表示し、必要に応じて(古いコミットから)復元できますか?私はgitの状態やgitのログでこれを行うことはできませんでした。

    たとえば、git log --name-statusを使用します。 README.mdをコミットして削除したとしますと、D README.mdと表示されます。コミットで削除されたと仮定します。abc123、次にabc123〜1はそれ以前のコミットです(README.mdがまだ存在しています)。次に、git show abc123~1:README.mdを使用して、そのファイルが削除される前にそのファイルの内容をコミットすることができます。それを復元する簡単な方法:git show 5235de78d28a07d2459130e7e3041b7720563b5d~1:README.md > README.md

    は、私はこれは私が第一にやっていることである

    git log --name-status -- path/to/folder

    +0

    詳細な回答ありがとうございます。 –

    0
    git reset --hard HEAD 
    

    このトリックを行う必要があります。このコマンドは、すべてのファイルを最後にコミットした方法にリセットします。

    +0

    ...削除されたファイルをフォルダでを表示することができます。 'git log'と' git reset --hard 2f34 ... 'ここで2f34 ...は最後のコミットからでした。それはちょうどレポ全体のいくつかの非常に古いデータを復元しました。私はちょうど1つのフォルダが必要でした。 –

    関連する問題