2014-02-06 39 views
1

我通常使用--prune(實際上是-p)與git fetch。幾分鐘前,我想從遠程倉庫抓取代碼,我做的:'git fetch --prune --tags`後還原輕量級代碼

git fetch --prune --tags 

然後捂臉當我看到:

x [deleted]   (none)  -> opengl 

我的一個局部變量的命名opengl已被刪除,我不知道如何恢復它。 trick to restore deleted tags在我的情況下不起作用,因爲標籤是一個輕量級標籤(只是一個引用,而不是標籤對象)。

您是否看到了恢復標籤的方法?


我使用git版本1.8.3.1。

回答

1

沒有簡單的方法,因爲沒有對標籤進行reflogs,但也許你可以從刪除之前找到你的.git目錄的備份。標籤將在.git/refs/tags/opengl.git/packed-refs的備份中。抓住40個字符的SHA-1,假設提交沒有被垃圾回收(見下一段),你可以在當前的回購庫中重新創建它。

如果標記指向的是未另外引用的提交(因此它現在變得無法訪問),git fsck可以找到懸掛提交。如果有多個懸掛提交,您仍然必須選擇正確的提交;如果提交可以從某個分支訪問,這不會找到任何有用的東西。但是如果現在是現在是一個懸而未決的提交,您可能會希望儘快恢復標記,以防止git gc垃圾收集。