2016-07-03 10 views
0

過去のコミットを別のディレクトリにチェックアウトしたいのですが、現在のレポが影響を受けることはまったくありません。現在のリポジトリに影響を与えずに別のディレクトリにチェックアウトします

クローンを作成してチェックアウトしていますが、残酷なようです。 GIT_WORK_TREEまたは--work-treeを設定すると、現在のレポだけを残しておくことはできません(他の場所でチェックアウトしても、HEADは更新されますが、必要ありません)。

良い方法がありますか?

+0

このチェックアウトされたコードで何をする予定ですか?あなたが望むのはファイルそのものであれば、デタッチ状態のコミットをチェックアウトしてからディレクトリ全体をカット&ペーストすることができます。 –

答えて

1

これにはgit worktreeを使用できます。

git worktree add ../other-worktree <old-commit-id> 

これにより、元のリポジトリに独立した作業ツリーを添付することができます。作業が完了したら、新しいディレクトリを削除するだけです。

詳細はgit help worktreeを参照してください。

前にgit worktreeこのようなことができましたが、今はgit worktreeを使用しない理由はありません。これは簡単でエラーが発生しにくいです:

(GIT_INDEX_FILE=$(mktemp) && 
    export GIT_INDEX_FILE && 
    git read-tree "$old-commit-id$ && 
    git checkout-index -a --prefix=../old-commit-copy/ && 
    rm "$GIT_INDEX_FILE" 
) 
関連する問題