在Git中查找当前签出的提交

我正在一个git bisect会议中。

什么是命令来找出哪些提交(SHA1哈希)我目前? git status不提供这个。

编辑:我想调用git log并看看第一个入口作品?

你有至less5种不同的方式来查看在git bisect话中你已经签出到工作副本中的提交( 请注意,选项1-4也可以在你没有进行二等分的情况下工作 ):

  1. git show
  2. git log -1
  3. Bash提示。
  4. git status
  5. 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 ,它也会显示提交信息,当没有参数的时候默认为当前提交。