2012-12-12 26 views
-1

我試圖檢索提交特定文件的最後提交(類型爲「git log foo.cc」)。 獲取所有提交併通過它們。 在提交樹中查找文件。 問題是,所有提交都包含我感興趣的文件。 提交樹是否假設包含僅提交的文件,或者假定提交時樹包含完整的樹?提交樹包含完整的工作樹

如果該樹應該已滿: 如何知道文件(TreeEntry)是否在特定提交中被修改?

謝謝!

+0

是的,這是預期的,給定的git commit會存儲整個存儲庫。要查看文件是否更改,可以在給定提交和提交的父級之間區分該文件的樹條目。 –

回答

0

在git中,每個提交都包含整個存儲庫的表示狀態。欲瞭解更多信息,請看here。段落快照沒有區別很明顯,爲什麼做出這個選擇。注意,如果文件在兩次提交之間沒有改變,最後一次提交只包含一個指向前一次提交中的文件的指針。您可以比較兩個承諾提交的指針以找出差異。另一種方法是使用Edward Thomson評論中提到的diff工具。

+0

澄清:我並不是想暗示應該使用diff工具。這是不必要的。我的意思是建議區分兩個提交的樹條目(類型/對象ID),步行父母,直到找到第一個區別。 –