如何使用 shell 脚本从 git repo 打印最新的提交 ID

Posted

技术标签:

【中文标题】如何使用 shell 脚本从 git repo 打印最新的提交 ID【英文标题】:How to print the latest commit ID from the git repo using shell script 【发布时间】: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 【参考方案1】:

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

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

【讨论】:

以上是关于如何使用 shell 脚本从 git repo 打印最新的提交 ID的主要内容,如果未能解决你的问题,请参考以下文章

从脚本执行git提交

使用 Git Bash 从 Shell 脚本调用批处理脚本

如何利用jenkins git shell脚本自动部署服务

转:Repo的使用

用Shell编写项目发布脚本

如何从 haskell 程序调用 bash 或 shell 脚本?