207

我正在git bisect开会。

找出我当前正在进行的提交(SHA1 哈希)的命令是什么?git status不提供这个。

编辑:我想打电话git log和看第一个条目有效吗?

4

5 回答 5

246

在会话期间,您至少有 5 种不同的方式来查看您当前已签出到工作副本中的提交git bisect请注意,选项 1-4 在您不进行 bisect 时也可以使用):

  1. git show.
  2. git log -1.
  3. Bash 提示。
  4. git status.
  5. git bisect visualize.

我将在下面详细解释每个选项。

选项 1:git 显示

正如this answer to the general question of how to determine which commit you current has check-out (不仅仅是 during git bisect) 中所解释的那样,您可以使用git show选项-s来抑制补丁输出:

$ 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+(或者它是更早的版本?)中,如果您将 Bash 提示配置为显示您已签出到工作副本中的当前分支,那么它还会显示您已检查的当前提交在平分会话期间或当您处于“分离 HEAD”状态时。在下面的示例中,我目前已c1abcde签出:

# Prompt during a bisect
user ~ (c1abcde...)|BISECTING $

# Prompt at detached HEAD state 
user ~ (c1abcde...) $

选项 4:git 状态

同样从 Git 版本 1.8.3+(可能更早,再次不确定)开始,运行git status还将显示您在 bisect 期间以及处于分离 HEAD 状态时签出的提交:

$ git status
# HEAD detached at c1abcde <== RIGHT HERE

选项 5:git bisect 可视化

最后,当你在做 agit bisect时,你也可以简单地使用git bisect visualize或者它的内置别名git bisect view来启动gitk,这样你就可以以图形方式查看你正在进行的提交,以及到目前为止你标记为坏和好的提交。我很确定这在 1.8.3 版本之前就已经存在了,我只是不确定它是在哪个版本中引入的:

git bisect visualize 
git bisect view # shorter, means same thing

在此处输入图像描述

于 2013-08-10T08:46:01.067 回答
102

你可以这样做:

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
于 2012-06-23T08:53:32.713 回答
25
$ git rev-parse 头
273cf91b4057366a560b9ddcee8fe58d4c21e6cb

更新:

或者(如果您有标签):

(适合命名版本,不太适合传回 git。)

$ git描述
v0.1.49-localhost-ag-1-g273cf91

或者(正如 Mark 建议的那样,为了完整起见,请在此处列出):

$ git show --oneline -s
c0235b7 根据 EXIF 方向自动旋转上传的图像
于 2012-06-23T08:53:06.733 回答
19

如果您只想提取一条简单的信息,您可以使用git show选项--format=<string>...并要求它不要给您与--no-patch. 这意味着您可以获得任何您想要的 printf 样式的输出,通常可能是单个字段。

例如,要获得缩短的哈希 ( %h),您可以说:

$ git show --format="%h" --no-patch
4b703eb

如果您希望将其保存到 bash 中的环境变量中(人们可能想要做的事情),您可以使用以下$()语法

$ GIT_COMMIT="$(git show --format="%h" --no-patch)"

$ echo $GIT_COMMIT
4b703eb

您可以执行的操作git show --help的完整列表位于. 但这里有一个可能有用的属性的简短列表:

  • %H提交哈希
  • %h缩写提交哈希
  • %T树哈希
  • %t缩写树哈希
  • %P父哈希
  • %p缩写的父哈希
  • %an作者姓名
  • %ae作者电子邮件
  • %at作者日期,UNIX 时间戳
  • %aI作者日期,严格的 ISO 8601 格式
  • %cn提交者姓名
  • %ce提交者电子邮件
  • %ct提交者日期,UNIX 时间戳
  • %cI提交者日期,严格的 ISO 8601 格式
  • %s学科
  • %f净化的主题行,适合文件名
  • %gDreflog 选择器,例如 refs/stash@{1}
  • %gd缩短的 reflog 选择器,例如 stash@{1}
于 2017-03-02T07:37:12.213 回答
4

使用git show,它还会向您显示提交消息,并且在不给定参数时默认为当前提交。

于 2012-06-23T10:37:21.073 回答