2016-02-05 18 views
1

我有一個文件,可以說,test.txt。讓我們說它的空文件,我承諾它,所以我的第一次提交將只是一個空文件。讓我們說這是爲2d37f7git checkout olderversion,但現在檢查正在使用的版本

現在可以說我編輯了文件,並在文件中添加了一些文本「hello world」,並且我提交了該文件。現在,我有世界您好版本另一個哈希,讓說,該散列是eec1598

現在,當我做的git的日誌,我看到這個

eec1598 (my last commit on top) 
2d37f7 (my first empty file) 

現在讓我們說,我要回到第一文件,我做這樣的事情

git checkout 2d37f7 test.txt 

當我現在檢查文件,它的空,這是很好的。但是,當我做

git log test.txt 

它讓我看到同樣的事情上面

eec1598 (my last commit on top) 
2d37f7 (my first empty file) 

在這一點上,我不知道哪個test.txt的版本是最新版本。我如何發現?

感謝

+0

可能重複[哪個提交有此blob?](http://stackoverflow.com/questions/223678/which-commit-has-this-blob) –

回答

2

注意,在git log顯示SHA值是爲提交,而不是文件。所以你要問的是如何確定哪個提交 test.txt的當前工作副本來自哪裏。不幸的是,這些信息並不存儲在任何地方在大多數情況下,您可以說文件不是來自單個提交,因爲該文件在多個提交中具有相同的內容。

所以總而言之,在git checkout <sha> <filename>之後,git只是認爲你的工作副本filename與你在本地修改的任何其他文件一樣;它不受限於任何特定的提交。

這就是說,你可以用git hash-object得到你當前版本的test.txt的哈希值,然後將該哈希值傳遞給一個腳本,該腳本列出了包含該文件版本的所有提交。要查看這種腳本的幾個示例,請參閱this question的第一個答案。

相關問題