使用shell脚本判断git状态
在终于无法忍受包含中文的链接带来的种种问题以后,我决定把固定连接的格式修改一下,为此使用了hexo-abbrlink
这个插件来进行文章编号的生成。
这个插件会在hexo g
的时候生成文章编号并将编号存储在文章abbrlink
字段里面,这就意味着在hexo g的过程中需要修改文章源文件才能将文章编号持久化存储起来。
这个过程在本地运行自然是没什么问题,然而如果使用GitHub actions自动生成并发布的话,就意味着在执行hexo g
之后需要将当前的修改push
回源代码仓库才行,这个操作看上去没什么问题,我甚至也发现了一个现成的github-push-action用于将代码push回原仓库。
但是在实际操作中我发现在文件没有任何文件发生更改时执行git commit -m "something" -a
的返回值是1
,而这会导致GitHub-actions
判定该step
执行状态为fail
进而终止执行。
于是我考虑使用简单的shell
语句来判断文件是否有修改,进而执行相应操作,将判断文件状态的几种可能方案记录如下:
1、git diff --quiet --exit-code --cached
可以用于判断已经追踪的文件是否有更改
2、if [ -z "$(git status --porcelain)" ]
可以检查文件是否有修改
3、exit $( git status --porcelain | wc -l )
可以直接作为返回值判0
具体代码如下
1 |
|
参考资料:
使用shell脚本判断git状态
https://blog.yrpang.com/posts/43978/