如何获取先前提交的SHA号?

时间:2017-03-01 04:36:52

标签: git

对于我的研究,我需要很少的数据,其中一个是前一次提交的SHA号,即如果我给出一个特定的提交号/ SHA号,我应该能够在它之前得到SHA号。

帮助我使用git命令获得相同的结果。

3 个答案:

答案 0 :(得分:4)

任何说明符转换为哈希ID的命令为git rev-parse

语法意味着“查找提交的父提交”来自gitrevisionscommit^commit~ - 使用您喜欢的任何一种类型。 commit 部分几乎可以是任何有效的提交说明符,包括分支名称,另一个提交哈希ID,特殊名称HEAD或这些后缀表达式中的另一个。 / p>

因此:

HEAD^

HEAD的父级,并且:

HEAD^^

HEAD^的父级,依此类推。

tilde语法实际上是许多帽子后缀的压缩版本,因此:

HEAD~5

与以下内容相同:

HEAD^^^^^

如果丢失了波浪号后的数字,Git假设您的意思是1

这一切意味着什么,放在一起,是:

git rev-parse HEAD^

(或HEAD~)将为您提供实际的哈希ID。但是你可以用任何普通的Git命令来编写HEAD^HEAD~。同样,如果1234567是有效缩短的提交哈希ID,则可以编写1234567^1234567~1来引用其父提交。

(提交 merge 提交有两个或更多个父项,在这种情况下,有更多语法可用于一次提取每个父项,或引用所有父项。再次,请参阅{ {3}}了解详情。)

答案 1 :(得分:3)

server.route({ method: 'GET', path: '/image', handler: function (request, reply) { var b64str="data:image/gif;base64,R0lGODlhPQBEAPeoAJosM//AwO/AwH..."; var buf = new Buffer(b64str, 'base64'); reply(buf).bytes(buf.length).header('Content-type', 'image/gif'); } }); 将为您提供由其父级的SHA指定的提交的SHA。

答案 2 :(得分:2)

git log --format="%H" -n 1 <commit>~只输出散列(%H)并将输出限制为1个条目(而不是显示所有祖先)来自提交的父级(〜)。