gitリポジトリの履歴からディレクトリ全体を(再帰的に)復元したいと思います。
ブランチ(マスター)は1つだけです。
エラーが含まれたコミットを知っています。
親コミットのsha1ハッシュを使用して、エラーが含まれる前のディレクトリの状態を復元できますか?
私はこのようなものについて考えました:
git checkout 348ce0aa02d3738e55ac9085080028b548e3d8d3 path/to/the/folder/
しかし、それはうまくいきませんでした。
gitリポジトリの履歴からディレクトリ全体を(再帰的に)復元したいと思います。
ブランチ(マスター)は1つだけです。
エラーが含まれたコミットを知っています。
親コミットのsha1ハッシュを使用して、エラーが含まれる前のディレクトリの状態を復元できますか?
私はこのようなものについて考えました:
git checkout 348ce0aa02d3738e55ac9085080028b548e3d8d3 path/to/the/folder/
しかし、それはうまくいきませんでした。
回答:
リビジョンとパスの間に「-」を追加してみてください:
git checkout 348ce0aa02d3738e55ac9085080028b548e3d8d3 -- path/to/the/folder/
また、以前のコミットからディレクトリを回復したい場合は、コミットハッシュをHEAD〜1に置き換えることができます。次に例を示します。
git checkout HEAD~1 -- path/to/the/folder/
rm -Rf path/to/the/folderそのときgit checkout 348ce0aa02d3738e55ac9085080028b548e3d8d3 -- path/to/the/folder/-結果:そのパスには、そのコミットとまったく同じファイルがあり、違いはなく、このコミット後に作成された余分なファイルはありませんでした。それが私が欲しいものです。
--ますか?
これを行うには、2つの簡単な方法があります。
エラーを含むコミットにエラーのみが含まれる場合は、git revertしてその影響を反転させます。
そうでない場合、簡単なパスは次のとおりです。
git checkout 348…cp -a path/to/the/folder ../tmp-restore-foldergit checkout HEAD # or whateverrm -rf path/to/the/foldermv ../tmp-restore-folder path/to/the/foldergit add path/to/the/foldergit commit -m "revert …"単純に行うgit checkout <SHA-ID>と、一時的にそのsha-commitに移動します。
各コミットオブジェクトは、その時点でのディスクの構造全体を保持しているため、そこにファイルがあり、それらをコピーする必要がある場合は、そうすることができます。警告:ただし、どのブランチにも属さないため、ファイルを作業ツリーにコピーしてコミットする前に、マスターに戻る必要があります。
git checkout 348ce0aa02d3738e55ac9085080028b548e3d8d3 -- path/to/the/folder/