我想将过去的提交检出到一个单独的目录中,我不希望当前的回购受到影响。
制作一个克隆并检查那里的工作,但这似乎是一种矫枉过正。设置GIT_WORK_TREE或--work-tree无法单独保留当前的repo(虽然它确实在其他地方检出,但它仍然更新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"
)