在Git中克隆一棵树

4

我对git不熟悉。

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

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

我已经尝试过git reset SHA,但SHA未被识别。我也尝试过git clone -b SHA repo.git,但也没有成功。


你是如何删除“历史记录的一部分”的? - michas
除了服务器上和你本地的那个副本,还有其他仓库的副本吗?(例如,有人在你之前克隆了它吗?) - michas
你的代码库使用了子模块吗?(是否有一个名为.gitmodules的文件?) - michas
你通过浏览器访问的是哪种服务器?(GitHub?)- 请在你的问题中更新所有这些细节。 - michas
2个回答

7
你混淆了不同的概念。
每当你克隆时,你会克隆整个存储库。(没有办法克隆特定的“树”)。
存储库主要由许多提交组成。这些是您可以检出的提交。每个提交都知道其父提交-这形成了历史树。
提交本身包含一个带有所有文件的目录树。
通常有一个托管“中央”代码库的服务器。
首先,您需要克隆您的代码库。这将在您的主机上创建该中央代码库的完整副本(包括所有分支和提交)。
之后,您通常只与本地代码库交互。
从您的错误消息(不幸地仅在某些评论中隐藏)来看,您的项目似乎可能使用子模块。(一种在项目中包含完全不同存储库的方式。)
这有点棘手。请查看http://git-scm.com/book/en/Git-Tools-Submodules

4

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

如果这个特定的提交只在你的本地历史记录中,那么请运行git reflog来确定提交。然后检出所需的提交。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接