我正在进行git平分会话。
用什么命令来找出我当前在哪个提交(SHA1哈希)?Git状态不提供此功能。
编辑:我猜调用git日志和看第一项工作?
我正在进行git平分会话。
用什么命令来找出我当前在哪个提交(SHA1哈希)?Git状态不提供此功能。
编辑:我猜调用git日志和看第一项工作?
$ git rev-parse HEAD 273cf91b4057366a560b9ddcee8fe58d4c21e6cb
更新:
或者(如果你有标签):
(适合命名版本,不太适合传递回git。)
$ git describe v0.1.49-localhost-ag-1-g273cf91
或者(正如Mark建议的那样,为了完整起见,在这里列出):
$ git show --oneline -s c0235b7 Autorotate uploaded images based on EXIF orientation
你可以这样做:
git rev-parse HEAD
进一步解释一下:git rev-parse是git的基本命令,用于解释任何可以指定提交名称的奇异方式,HEAD是对当前提交或分支的引用。(在git平分会话中,它直接指向一个提交(“分离的HEAD”),而不是一个分支。)
或者(更容易记住)可以这样做:
git show
... 默认显示HEAD指向的提交。对于一个更简洁的版本,你可以这样做:
$ git show --oneline -s
c0235b7 Autorotate uploaded images based on EXIF orientation
你至少有5种不同的方法来查看你目前签入工作副本的文件(注意,选项1-4也可以在你不做等分的时候工作):
git。 Git log -1。 Bash提示。 git的地位。 Git平分可视化。
我将在下面详细解释每个选项。
选项1:git show
正如在回答如何确定当前签出的提交(不仅仅是在git分段期间)的一般问题时所解释的那样,你可以使用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状态还会显示你在平分期间签出了哪些提交,以及当你处于分离HEAD状态时:
$ git status
# HEAD detached at c1abcde <== RIGHT HERE
选项5:git平分可视化
最后,当你在进行git平分时,你也可以简单地使用git bisect可视化或其内置别名git bisect视图来启动gitk,这样你就可以以图形化的方式查看你正在进行哪些提交,以及到目前为止你已经标记为坏的和好的提交。我很确定这个在1.8.3版本之前就已经存在了,我只是不确定它是在哪个版本引入的:
git bisect visualize
git bisect view # shorter, means same thing
如果你只想提取一个简单的信息,你可以使用git show和——format=<string>选项…让它不要给你不带补丁的区别。这意味着您可以获得所需内容的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缩写父哈希值 %作者姓名 %ae作者邮箱 %在作者日期,UNIX时间戳 %aI作者日期,严格的ISO 8601格式 %cn提交者名称 提交人电子邮件 %ct提交日期,UNIX时间戳 %cI提交日期,严格的ISO 8601格式 % s主题 %f经过消毒的主题行,适用于文件名 %gD reflog选择器,例如refs/stash@{1} 缩短的reflog选择器,例如:stash@{1}