2017-03-01 58 views
-2

對於我的研究,我只需要很少的數據,其中之一就是前一次提交的SHA編號,即如果我給出特定的提交編號/ SHA編號,我應該能夠在它之前獲得SHA編號。如何獲得之前提交的SHA編號?

幫我用git命令來得到相同的結果。

回答

2

git rev-list --parents -n 1 SOME_COMMIT將爲您提供您指定的提交的SHA,其後跟隨其父代的SHA。

+0

+1:這是讓所有父母不用事先知道合併提交有多少父母的好方法。我更喜歡使用'--no-walk'而不是'-n 1',但效果完全相同。 – torek

2

git log --format="%H" -n 1 <commit>~僅輸出散列(%H)並將輸出限制爲來自提交的父項(〜)的1項(而不是顯示所有祖先)。

3

的命令翻譯任何說明符轉換爲哈希ID是git rev-parse

語法,這意味着「尋父提交的承諾」爲gitrevisions,並commit^commit~ - 使用你喜歡哪個輸入。 commit部分幾乎可以是任何有效的提交說明符,包括分支名稱,另一提交哈希ID,特殊名稱HEAD或這些後綴表達式中的另一個。

因此:

HEAD^ 

HEAD父,並且:

HEAD^^ 

HEAD^父,等等。

的波浪線語法實際上是許多帽子後綴的壓縮版本,所以:

HEAD~5 

意味着同樣的事情:

HEAD^^^^^ 

如果波浪號後面的數字丟失,Git的假設你的意思是1

這一切都說明,放在一起,就是:

git rev-parse HEAD^ 

(或HEAD~)將讓你的實際哈希ID。但是你可以用任何正常的Git命令代替HEAD^HEAD~。同樣,如果1234567是一個有效的縮短提交哈希ID,您可以編寫1234567^1234567~1來引用其父提交。

(承諾是合併提交有兩個或更多的父母,在這種情況下,有可同時提取每個家長一個,或指代所有的父母更多的語法。再次,看gitrevisions瞭解詳情。)