2012-11-26 102 views
0

我非常懷疑我可以這樣做,因爲提交哈希是在提交時生成的,但有沒有辦法可以動態保存提交的哈希編號,因爲我正在提交。Git:動態抓取哈希

例子:
我做一些修改,並提交
的提交哈希值保存到文件
然後我同步提交到Github的服務器

理想的情況是我想擁有的是知道的防彈方式,也提交版本是我正在看的文件。我可以實現版本,但由於開發速度非常快(通常在幾分鐘內完成5-6次),這是非常不切實際的。

我接受其他建議。

+0

爲什麼你需要在文件中包含這些信息?問這個問題很容易。如果版本發生了很大的變化,在文件中加入散列並不能提供任何價值 – Ikke

+0

我想要做的就是能夠在運行時打印出git散列。哈希給我一個獨特的標識符,無論分支或版本或任何其他作爲參考點。 – chriscct7

+0

難道你不能運行git symbolic-ref HEAD來獲得散列嗎? – Ikke

回答

0

不,您不能將提交ID包含在提交中的文件中。標識提交的sha1哈希,因此將一個ID插入文件會導致用於提交更改的哈希。

0

是有一種方法可以動態地保存的提交的散列數目,因爲我commiting

號時對象被完全創建的提交時,將生成的散列識別提交。所以,只有在完成提交之後,編寫提交消息等,才能訪問提交哈希。

然而,當你在你的例子中編寫它,你似乎先提交,然後將提交散列保存到文件中。如果你不想將該文件包含在提交本身中(這不起作用,因爲它會改變提交中的樹),那麼這是完全可能的。

簡單的命令來獲得當前HEAD的哈希值,即指向你剛纔創建的指針承諾是:

git rev-parse HEAD 

理想的情況是我想擁有的是知道的防彈方式哪個提交版本是我正在查看的文件。

你可能想要的是類似Subversion的$Revision: X$。但由於以上原因,這是不可能的。你可以可以做的是提供乾淨/污跡過濾器執行這種操作結帳,但我不會建議。

另一種方法是在文件上使用ident屬性,該屬性確實將$Id$擴展爲blob id。不是提交ID,但。另見this question

0

你可能會看看使用Git post-commit hook,雖然提交散列必須存儲在一個單獨的文件,如其他人已經注意到上面。

+0

是的。我想要做的是將其存儲在version.txt文件中,然後使用get_contents從此處讀取它。 – chriscct7