我是git的新手。
我不小心删除了git项目的部分历史记录。现在,我想把头脑设置为最新的稳定版本。问题是我想要设置HEAD的树无法从它的命令访问,但我可以通过浏览器访问它。
有人知道如何使用SHA来克隆特定的树吗?
我尝试过git reset SHA,但是无法识别SHA。
我也尝试了git clone -b SHA repo.git
,但它也没有用。
答案 0 :(得分:7)
你混淆了不同的概念。
无论何时克隆,都要克隆整个存储库。 (无法克隆特定的“树”。)
存储库主要由许多提交组成。那些是你可以结账的。每个提交都知道其父提交 - 这形成了历史树。
提交本身包含一个包含所有文件的目录树。
通常有某种服务器托管“中央”存储库。
首先克隆您的存储库。这将在您的主机上创建该中央存储库的完整副本。 (包含所有分支和提交。)
之后,您通常只与本地存储库进行交互。
从您的错误消息(不幸的是仅在某些评论中隐藏),您的项目似乎可能使用子模块。 (在项目中包含完全不同的存储库的方法。)
答案 1 :(得分:4)
这个“最新的稳定版本”已经推送到服务器吗?如果是,您可以投放git fetch
和git checkout SHA
。
如果此特定提交仅在您的本地历史记录中,请执行git reflog
并确定提交。然后签出所需的提交。