有一个很好的方法来获得一个如下工作的git哈希:
git commit -a -m ''
会导致的git哈希?背景:
我正在编写一些打包构建的开发工具。我希望构建包包含某种合理强大且完全自动的版本ID。对我来说,git SHA1哈希就足够了。不幸的是,仅仅使用git rev-parse HEAD
是不够的,因为用户通常会在提交之前运行构建,因此在HEAD
更新之前。
答案 0 :(得分:4)
我认为你想要一个Git树对象的哈希,而不是提交的哈希。提交哈希值取决于提交时间,每次计算时都会有所不同。
要从工作副本创建新的树对象,您可以运行write-tree
命令:
git add -u && git write-tree && git reset
请注意,这会弄乱你的索引(因为它会临时暂停所有更改)
答案 1 :(得分:1)
创建一个临时索引,向其中写入未提交的更改,然后获取该树的sha。
cp .git/index /tmp/git_index
export GIT_INDEX_FILE=/tmp/git_index
git add -u
git write-tree
这将打印出一个对git repo当前状态唯一的sha,包括未提交的更改,但不包括新文件。