2013-10-26 85 views
2

我是git的新手。在git中克隆一棵樹

我不小心刪除了我們在git上項目的部分歷史記錄。現在,我想把頭部設置到最新的穩定版本。問題是我想要將HEAD設置爲的樹無法從其命令訪問,但我可以通過瀏覽器訪問它。

有人知道如何使用SHA克隆特定的樹嗎?

我曾嘗試git的復位SHA,但SHA不被認可。 我也試過git clone -b SHA repo.git,但它也沒有工作。

+0

你是如何刪除「歷史的一部分」? – michas

+0

除了服務器和本地服務器之外,是否還有其他的存儲庫副本? (也就是之前有人克隆過嗎?) – michas

+0

您的資料庫是否使用任何子模塊? (是否有文件'.gitmodules'?) – michas

回答

3

這個「最新的穩定版本」已經推送到服務器了嗎?如果是,您可以運行git fetchgit checkout SHA

如果這個特殊的承諾僅僅是在你當地的歷史,做一個git reflog並確定提交。然後檢出所需的提交。

5

你混淆了不同的概念。

每當你克隆,克隆你的整體。 (沒有辦法克隆特定的「樹」。)

存儲庫主要由許多提交組成。那些是你可以結帳的。每個提交知道它的父提交 - 這形成歷史

一個提交本身包含一個目錄樹的所有文件。


通常會有某種託管「中央」存儲庫的服務器。

您首先克隆您的存儲庫。這將在主機上創建該中央存儲庫的完整副本。 (與所有的分支和提交。)

之後,你通常只能與本地存儲庫交互。


從你的錯誤消息(不幸隱藏在一些評論中),似乎你的項目可能使用子模塊。 (包括在您的項目完全不同的版本庫的方式。)

這往往是有點棘手。看看http://git-scm.com/book/en/Git-Tools-Submodules