在git中克隆一棵树

时间:2013-10-26 00:56:47

标签: git tree clone

我是git的新手。

我不小心删除了git项目的部分历史记录。现在,我想把头脑设置为最新的稳定版本。问题是我想要设置HEAD的树无法从它的命令访问,但我可以通过浏览器访问它。

有人知道如何使用SHA来克隆特定的树吗?

我尝试过git reset SHA,但是无法识别SHA。 我也尝试了git clone -b SHA repo.git,但它也没有用。

2 个答案:

答案 0 :(得分:7)

你混淆了不同的概念。

无论何时克隆,都要克隆整个存储库。 (无法克隆特定的“树”。)

存储库主要由许多提交组成。那些是你可以结账的。每个提交都知道其父提交 - 这形成了历史

提交本身包含一个包含所有文件的目录


通常有某种服务器托管“中央”存储库。

首先克隆您的存储库。这将在您的主机上创建该中央存储库的完整副本。 (包含所有分支和提交。)

之后,您通常只与本地存储库进行交互。


从您的错误消息(不幸的是仅在某些评论中隐藏),您的项目似乎可能使用子模块。 (在项目中包含完全不同的存储库的方法。)

这往往有点棘手。看看http://git-scm.com/book/en/Git-Tools-Submodules

答案 1 :(得分:4)

这个“最新的稳定版本”已经推送到服务器吗?如果是,您可以投放git fetchgit checkout SHA

如果此特定提交仅在您的本地历史记录中,请执行git reflog并确定提交。然后签出所需的提交。