PowerShell中如何从git log输出提取纯commit ID列表
PowerShell 提取Git纯Commit ID实现方法
最优方案:直接使用Git格式化输出(无需额外处理字符串)
不需要先输出带提交描述的日志再做裁剪,Git原生支持自定义日志输出字段,直接执行以下命令即可拿到纯commit ID列表:
# 输出纯commit ID git log --pretty=format:"%H" # 如果需要和示例一致的前导3空格缩进,执行这个 git log --pretty=format:" %H"
参数说明:%H是Git log的格式化占位符,对应完整的40位commit哈希值,输出结果不会附带任何提交说明文本。
兼容方案:处理git log --pretty=oneline的已有输出
如果你必须基于oneline格式的输出做裁剪,PowerShell里可以用以下两种方式实现:
- 按分隔符截取:因为oneline格式中commit ID和提交信息以空格分隔,且commit ID本身不含空格,直接取每行按空格分割的第一部分即可
git log --pretty=oneline | ForEach-Object { " " + $_.Split(' ')[0] } - 固定长度截取:Git SHA1格式的commit ID固定为40位十六进制字符,直接截取每行前40位即可,容错性更强
git log --pretty=oneline | ForEach-Object { " " + $_.Substring(0, 40) }
两种写法执行后输出结果完全匹配预期:
3396763626316124388f76be662bd941df591118 c73bbc98b5f55e5a4dbfee8e0297e4e1652a0687
内容的提问来源于stack exchange,提问作者sansalk
相关产品推荐
相关产品推荐

