4

我是 git 新手。

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

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

我试过 git reset SHA,但是 SHA 不被识别。我也试过git clone -b SHA repo.git了,但也没有用。

4

2 回答 2

7

你混淆了不同的概念。

每当您克隆时,都会克隆整个存储库。(没有办法克隆特定的“树”。)

一个存储库主要由许多提交组成。这些是您可以结帐的。每个提交都知道它的父提交——这形成了一个历史

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


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

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

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


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

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

于 2013-10-26T07:42:12.760 回答
4

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

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

于 2013-10-26T05:35:57.487 回答