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

Ste*_* Lu 137 git

我正处于git bisect会话中.

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

编辑:我想打电话git log,看第一个条目工作?

小智 142

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

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

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

选项1:git show

正如在解释这个答案到提交当前已签出(不只是在如何确定的一般问题git bisect),您可以使用git show-s选项禁止补丁的输出:

$ git show --oneline -s
a9874fd Merge branch 'epic-feature'
Run Code Online (Sandbox Code Playgroud)

选项2:git log -1

您还可以简单git log -1地找出您当前正在进行的提交.

$ git log -1 --oneline
c1abcde Add feature-003
Run Code Online (Sandbox Code Playgroud)

选项3:Bash提示

在Git版本1.8.3+(或者它是早期版本?)中,如果您将Bash提示符配置为显示当前分支已经签出到您的工作副本中,那么它还会显示您已检查的当前提交在二等分会议期间或当你处于"独立的HEAD"状态时.在下面的示例中,我目前已c1abcde检查过:

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

# Prompt at detached HEAD state 
user ~ (c1abcde...) $
Run Code Online (Sandbox Code Playgroud)

选项4:git状态

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

$ git status
# HEAD detached at c1abcde <== RIGHT HERE
Run Code Online (Sandbox Code Playgroud)

选项5:git bisect可视化

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

git bisect visualize 
git bisect view # shorter, means same thing
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 除非您处于分离状态,否则`git status`不会显示提交ID。否则它会显示“在分支*无论如何*”。不过 `git show` 可以工作 (2认同)

Mar*_*air 83

你可以这样做:

git rev-parse HEAD
Run Code Online (Sandbox Code Playgroud)

进一步解释:git rev-parse是git的基本命令,用于解释您可以指定提交名称的任何外来方式,并且HEAD是对当前提交或分支的引用.(在git bisect会话中,它直接指向提交("分离的HEAD")而不是分支.)

或者(也更容易记住)就是:

git show
Run Code Online (Sandbox Code Playgroud)

...默认显示HEAD指向的提交.对于更简洁的版本,您可以:

$ git show --oneline -s
c0235b7 Autorotate uploaded images based on EXIF orientation
Run Code Online (Sandbox Code Playgroud)

  • 如果您只想获取散列以供其他地方使用,则git rev-parse HEAD不需要处理,而需要使用所有垃圾替代方法。 (3认同)
  • `git rev-parse --short HEAD` (将对象名称缩短为唯一的前缀) (3认同)

Ale*_*ysh 16

$ git rev-parse HEAD
273cf91b4057366a560b9ddcee8fe58d4c21e6cb

更新:

或者(如果你有标签):

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

$ git describe
v0.1.49-localhost-ag-1-g273cf91

或者(正如马克建议的那样,在此列出完整性):

$ git show --oneline -s
c0235b7 Autorotate uploaded images based on EXIF orientation

  • 您要求使用SHA1,而不是容易记住的东西.;-) (7认同)

Hos*_*ork 11

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

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

$ git show --format="%h" --no-patch
4b703eb
Run Code Online (Sandbox Code Playgroud)

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

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

$ echo $GIT_COMMIT
4b703eb
Run Code Online (Sandbox Code Playgroud)

您可以做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 消毒主题行,适用于文件名
  • %gD reflog选择器,例如,refs/stash @ {1}
  • %gd 缩短的reflog选择器,例如stash @ {1}


归档时间:

查看次数:

115440 次

最近记录:

8 年,6 月 前