1

我想使用 git hash 来破坏缓存。

我的部署脚本将在 git 中查找特定文件,并使用上次更改文件的提交中的简短版本的哈希。这意味着每个文件的缓存清除字符串仅在必要时更改。

到目前为止,我有以下命令,它很接近但不太正确:

git log -n 1 --abbrev-commit --pretty=oneline htdocs/js/sample.js

返回:

21b1991 Commit message here

我可以为提交哈希解析该字符串,但如果可能的话,我宁愿不这样做。

我想让 git 返回:

21b1991

如果 git 在发出命令时开始返回不同长度的哈希,我当然希望解决方案继续工作。我也不太反对使用完整的哈希,但我认为没有必要。

部署将基于 git,并在 Ubuntu 12.04 TLS 系统上进行。

建议?

4

3 回答 3

6

尝试--pretty=format:%h代替--abbrev-commit --pretty=oneline

例如

git log -n 1 --pretty=format:%h htdocs/js/sample.js
于 2013-02-15T17:04:13.770 回答
0

您可以为此使用 awk:

git log -n 1 --abbrev-commit --pretty=oneline htdocs/js/sample.js | awk '{print $1}'
于 2013-02-15T17:01:19.867 回答
0

您应该记住,短提交哈希的大小可能会有所不同,具体取决于您在历史记录中的提交次数——在代码中使用完整哈希所付出的代价很小,而使用完整哈希时,您始终可以放心参考正确的文件。

我认为短哈希是为我们可怜的小脑开发人员提供便利,而不是程序代码应该用来节省几个字节的东西。

于 2013-02-15T20:47:05.287 回答