【问题标题】:How to print the latest commit ID from the git repo using shell script如何使用 shell 脚本从 git repo 打印最新的提交 ID
【发布时间】:2019-09-15 13:21:22
【问题描述】:

我在 linux 环境中有以下 shell 脚本,其中 arr 有 git repo 路径列表,当我尝试运行此脚本时,我通过第 3 行进入该路径,但我无法获得最新的提交 ID 并保存在变量中,我在此代码中缺少的内容以及如何在该变量“commit_ID”中获取该提交 ID。

for i in "${arr[@]}"
do
 cd $i
 echo $i
 commit_ID = git log -1
 echo $commit_ID
done

【问题讨论】:

  • 尝试将 commit_ID 行更改为 commit_ID=git log -n1。在 git 之前和 1 之后加上反引号。看看这是否有效。您可能还想在done 之前执行cd .. 以返回父目录。
  • 而不是commit_ID=$( git log -n1 ),= 周围没有空格。
  • 它只是打印一个空行,当我尝试 commit_ID = git log -n1
  • 关于 cd,我猜它应该是 cd -,这样它就可以到达之前的任何路径(参数可能由 2 个目录组成......或绝对路径或什么不是)。
  • 不要使用cd。请改用commit_ID=$(git --git-dir=$i/.git log -n1)。如果$i 是一个裸仓库,请不要附加/.git

标签: git shell repo


【解决方案1】:

您可以instead use,而不是git log -n1

COMMIT_ID=$(git rev-parse --verify HEAD)

【讨论】: