在Git中查找当前签出的提交
我正在一个git bisect
会议中。
什么是命令来找出哪些提交(SHA1哈希)我目前? git status
不提供这个。
编辑:我想调用git log
并看看第一个入口作品?
你有至less5种不同的方式来查看在git bisect
话中你已经签出到工作副本中的提交( 请注意,选项1-4也可以在你没有进行二等分的情况下工作 ):
-
git show
。 -
git log -1
。 - Bash提示。
-
git status
。 -
git bisect visualize
。
我将在下面详细解释每个选项。
选项1:git show
正如在回答如何确定您目前已经签出哪个提交(而不仅仅是在git bisect
期间)的一般问题中所解释的那样,您可以使用带-s
选项的git show
来禁止修补程序输出:
$ git show --oneline -s a9874fd Merge branch 'epic-feature'
选项2:git log -1
你也可以简单地做git log -1
来找出你当前正在进行的提交。
$ git log -1 --oneline c1abcde Add feature-003
选项3:Bash提示
在Git 1.8.3+版本中(或者是早期版本?),如果你已经configuration了Bash提示符来显示你已经签出的当前分支到你的工作副本中,那么它也会显示你已经检查过的当前提交在平分会议期间或当您处于“分离的头”状态时。 在下面的例子中,我目前已经检出了c1abcde
:
# Prompt during a bisect user ~ (c1abcde...)|BISECTING $ # Prompt at detached HEAD state user ~ (c1abcde...) $
选项4:git状态
也是Git版本1.8.3+(可能更早,再次不确定),运行git status
也会告诉你在分叉和分离HEAD状态期间检查了什么提交:
$ git status # HEAD detached at c1abcde <== RIGHT HERE
选项5:git bisect可视化
最后,当你正在做一个git bisect
,你也可以简单地使用git bisect visualize
或者其内置的别名git bisect view
来启动gitk
,这样你就可以用graphics方式查看你在哪个提交,以及哪个提交目前已经标示为坏的和好的。 我很确定这个版本在1.8.3之前就已经存在了,我只是不确定它在哪个版本中被引入:
git bisect visualize git bisect view # shorter, means same thing
你可以做:
git rev-parse HEAD
要进一步解释: git rev-parse
是git的基本命令,用于解释任何可以指定提交名称的奇特方法,而HEAD
是对当前提交或分支的引用。 (在git bisect
会话中,它直接指向一个提交(“分离HEAD”),而不是一个分支。)
或者(更容易记住)就是做:
git show
…默认显示HEAD
指向的提交。 为了更简洁的版本,你可以这样做:
$ git show --oneline -s c0235b7 Autorotate uploaded images based on EXIF orientation
$ git rev-parse HEAD 273cf91b4057366a560b9ddcee8fe58d4c21e6cb
更新:
或者(如果您有标签):
(很好的命名版本,不好回传给git。)
$ git描述 v0.1.49-本地主机-AG-1-g273cf91
或者(正如Mark所build议的,在此完整列出):
$ git show --oneline -s c0235b7根据EXIF方向自动旋转上传的图像
如果你想提取一个简单的信息,你可以用--format=<string>
选项来使用git show
,并要求不要用--no-patch
来给你diff。 这意味着你可以得到任何你想要的printf风格的输出,这通常可能是单个字段。
例如,为了得到简短的散列( %h
),你可以说:
$ git show --format="%h" --no-patch 4b703eb
如果你想把它保存到bash中的一个环境variables中(可能是人们想要做的事情),你可以使用$()
语法 :
$ GIT_COMMIT="$(git show --format="%h" --no-patch)" $ echo $GIT_COMMIT 4b703eb
你可以做的完整列表是在git show --help
。 但是这里有一个可能有用的属性的缩略列表:
-
%H
提交哈希 -
%h
缩写提交散列 -
%T
树散列 -
%t
缩写树哈希 -
%P
父散列 -
%p
缩写为父散列 -
%an
作者姓名 -
%ae
作者电子邮件 -
%at
作者date,UNIX时间戳 -
%aI
作者的date,严格的ISO 8601格式 -
%cn
提交者名称 -
%ce
提交电子邮件 -
%ct
提交者date,UNIX时间戳 -
%cI
提交者date,严格的ISO 8601格式 -
%s
主题 -
%f
消毒的主题行,适合于文件名 -
%gD
reflogselect器,例如,refs / stash @ {1} -
%gd
缩短了reflogselect器,例如,存储@ {1}
使用git show
,它也会显示提交信息,当没有参数的时候默认为当前提交。