Git:在飞行中抓取哈希

Git:在飞行中抓取哈希,git,github,Git,Github,我非常怀疑我能做到这一点,因为提交哈希是在提交时生成的,但是有没有一种方法可以在提交时动态保存提交的哈希数 示例: 我做了一些更改并提交提交哈希将保存到文件中,然后我将提交同步到Github服务器 理想情况下,我想要的是一种防弹方法,可以知道我正在查看的文件是哪个提交版本。我可以实现版本,但考虑到开发速度极快(通常在几分钟内提交5-6次),这是非常不现实的 我愿意接受其他建议。不,您不能在提交中的文件中包含提交ID。标识提交的sha1散列,因此在文件中插入一个ID将导致用于提交的散列发生更改 有

我非常怀疑我能做到这一点,因为提交哈希是在提交时生成的,但是有没有一种方法可以在提交时动态保存提交的哈希数

示例:
我做了一些更改并提交
提交哈希将保存到文件
中,然后我将提交同步到Github服务器

理想情况下,我想要的是一种防弹方法,可以知道我正在查看的文件是哪个提交版本。我可以实现版本,但考虑到开发速度极快(通常在几分钟内提交5-6次),这是非常不现实的


我愿意接受其他建议。

不,您不能在提交中的文件中包含提交ID。标识提交的sha1散列,因此在文件中插入一个ID将导致用于提交的散列发生更改

有没有一种方法可以在提交时动态保存提交的哈希数

否。标识提交的哈希是在完全创建提交对象时生成的。因此,只有在完成提交、编写提交消息等之后,才能访问提交散列

然而,当您在示例中编写它时,您似乎首先提交,然后将提交散列保存到一个文件中。如果您不想在提交中包含该文件(因为它会更改提交中的树,所以无法工作),那么这是完全可能的

获取当前头的哈希值(即指向您刚刚创建的提交的指针)的简单命令如下:

git rev-parse HEAD
理想情况下,我想要的是一种防弹方法,可以知道我正在查看的文件是哪个提交版本

您可能想要的是类似Subversion的
$Revision:X$
。但由于上述原因,这是不可能的。你可以做的是提供干净/污迹过滤器,在结帐时执行这样的操作,但我不建议这样做


另一种方法是对文件使用
ident
属性,该属性实际上将
$Id$
扩展到blob Id,而不是commit Id。另请参见。

您可能会考虑使用,但提交散列必须存储在一个单独的文件中,正如上面其他人所指出的。

为什么需要在文件中包含此信息?问git这件事很容易。如果版本变化如此之大,在我看来,文件中有一个散列并不能提供任何价值。我想做的是能够在运行时打印出git散列。散列为我提供了一个唯一的标识符,无论分支、版本或任何其他内容,都可以作为参考点。您不能在运行时运行git symbolic ref HEAD来获取散列吗?不,我正在配置文件中打印此散列。我不能假设用户安装了git。我的一个想法是找到一种自动化提交过程的方法,这样在提交之后,第二次提交会自动发生,将之前的提交散列保存为罚款,然后提交。是的。我想做的是将它存储在version.txt文件中,然后使用get_contents从那里读取它。