You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取Git本地与远程仓库中当前提交的相关列信息

提取Git分支命令输出中当前提交的相关信息

嘿,这事儿好办!你已经通过git branch -vv拿到了分支的详细信息,要提取当前提交的相关列,用几个简单的命令行工具组合就能搞定,给你几种实用的方法:

方法一:用grep+awk精准过滤当前分支行

先通过grep定位到带*的当前分支行,再用awk提取你需要的列。比如要完整提取分支名、提交哈希、关联远程分支、提交信息,命令如下:

git branch -vv | grep '^\*' | awk '{print $1, $2, $3, substr($0, index($0,$4))}'
  • 解释:grep '^\*'专门匹配当前分支那一行;awk里的$1是带*的分支名,$2是提交哈希值,$3是关联的远程分支(带方括号的部分),substr($0, index($0,$4))会完整提取从第四个字段开始的提交信息(避免提交信息含空格时被截断)。

方法二:用Git原生命令直接获取(更可靠)

其实Git本身提供了直接查询当前分支各项信息的命令,不用去过滤git branch -vv的输出,格式更稳定:

  • 获取当前分支名:git rev-parse --abbrev-ref HEAD
  • 获取当前提交的短哈希:git rev-parse --short HEAD
  • 获取关联的远程分支:git for-each-ref --format='%(upstream:short)' $(git rev-parse --abbrev-ref HEAD)
  • 获取当前提交的备注信息:git log -1 --pretty=%B

如果想把这些信息整合成一行输出,用这个命令:

printf "%s %s %s %s\n" "$(git rev-parse --abbrev-ref HEAD)" "$(git rev-parse --short HEAD)" "$(git for-each-ref --format='%(upstream:short)' $(git rev-parse --abbrev-ref HEAD))" "$(git log -1 --pretty=%B)"

方法三:单步awk完成过滤提取

把grep的匹配逻辑直接放到awk里,一步到位:

git branch -vv | awk '/^\*/ {print $1, $2, $3, substr($0, index($0,$4))}'

效果和方法一完全一样,只是少了一个管道步骤,更简洁。

如果只需要特定列(比如只拿分支名和提交哈希),只要调整awk里print后面的参数就行,比如print $1, $2。

内容的提问来源于stack exchange,提问作者CodeMed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:40:01