2016-11-03 44 views
2

我有一個本地回購,並且此回購有一個遠程。我想知道在遠程上檢出哪個提交(按SHA編號),假定遠程站不是裸存儲庫。Git:查找在遠程檢出哪個提交

說明:我不想跟蹤分支或任何其他類型的分支在我的本地存儲庫上。事實上,我想要一個即使我的本地存儲庫是裸倉庫也可以工作的方法。想象一下,我的遠程是ssh://whatever/foo,所以我想要獲得相當於SSH的服務器whatever,做cd /foogit rev-parse HEAD

我不想直接做上面的例子,因爲我不能保證我能通過SSH訪問遠程。我想,工程的遠程

我想響應的類型,無論是一個SHA,而不是一個分支名

+1

使用jthill的答案。作爲一個側面說明,這甚至可以在裸回購機制上運行,因爲所有的存儲庫都必須具有「HEAD」。 (如果'HEAD'指的是一個尚未出生的分支,那麼你將無法以這種方式*看到*,或者根本就不能看到*,但在這種情況下沒有答案)。換句話說, ,你得到的哈希ID不是「被檢出的提交」,而是「當前的提交」,即它仍然意味着裸倉庫中的某些東西。 – torek

回答

1
git ls-remote origin HEAD 

(任何回購基準將爲起源做的方法,你可以使用的URL或路徑)

+0

出於某種原因,我得到多個條目,任何想法如何獲得'頭'? https://gist.github.com/cool-RR/27b9825165791e4ec536f89af70c143a –

+0

這是一個模式匹配,'| awk'{$ 2 ==「HEAD」}「'去掉遠程追蹤頭。 – jthill

+0

是的,我也在Python中做了類似的模式匹配,我只希望我不必這樣做,因爲你永遠不知道這些東西什麼時候會失敗。如果有一種方法可以從Git獲得純粹的答案而不必進行文本解析,那將會很不錯。如果您知道某種方式,請告訴我。 –