2016-12-06 32 views
0

我知道如何獲取當地版本的本地回購(How to retrieve the hash for the current commit in Git?)的提交散列。如何檢索回購中最新可用版本的提交散列

給定一個分支名稱,可能與本地回購分支不同,有沒有辦法在遠程回購中獲得最新可用版本的長哈希值,而無需實際進行克隆或拉取?

+0

檢查[this](http://stackoverflow.com/q/949314/1761003) – Gattsu

+0

@maveň這就是我鏈接到的帖子。我會再次沖刷它,但我沒有看到這一個。 –

回答

1

git ls-remote(或git remote show但它不是直接在這裏有用的)可以使用相同的Git協議作爲git clonegit fetch聯繫另一個Git的。這些首先得到的引用給散列映射列表,e.g隨着克隆:

8d7a455ed52e2a96debc080dfc011b6bb00db5d2  HEAD 
a274e0a036ea886a31f8b216564ab1b4a3142f6c  refs/heads/maint 
8d7a455ed52e2a96debc080dfc011b6bb00db5d2  refs/heads/master 
fb549caa12ec67f9448f8f6b29b102ee5ec54c82  refs/heads/next 
4b8cb2c9d27c63c844b1d2507b8b0981adfcf397  refs/heads/pu 
595ca97928bf3cde17e40ecbbacb65cc3d053a06  refs/heads/todo 

和獲取,他們去下載任何「有趣」的對象,而git ls-remote只是簡單地打印出來,然後停止。

請參閱the documentation瞭解選項和其他詳細信息;請注意,存儲庫參數可以是一個URL,因此您甚至不需要克隆即可運行。

1

我不知道有一種方法可以直接在本地使用Git。如果您使用的是像Bitbucket或GitHub這樣的工具,那麼該網站會以純視圖顯示最新的提交哈希。

在本地執行此操作而不對任何東西產生持久影響的一種選擇是簡單更新跟蹤分支。但首先,記錄跟蹤分支的提交哈希是什麼。所以這樣做:

git log origin/master # record the SHA-1 hash from HEAD 
git pull origin master # update the tracking branch 
# find the SHA-1 hash you want 
git update-ref refs/remotes/origin/master <original SHA-1 hash of origin/master> 

這裏的技巧是重置跟蹤分支到它開始時的位置。現在你有你想要的散列。

但問題:如果沒有包含相應提交的跟蹤分支,這個散列有什麼用處?

+0

使用很複雜。長話短說,它是一個軟件自動更新系統,它使用git commit hashes進行更新檢查。該系統的結構是隻有更新服務器訪問git(客戶端設備通過更新服務器,非git - 服務器拉,複製到臨時區域,清理並使其可用於客戶端)和服務器端git手動拉動拉。我試圖在服務器上構建一個狀態頁面,顯示更新服務器的當前回購版本,同時也是git服務器的最新版本。 –

相關問題