2012-12-12 25 views
-1

我试图检索提交特定文件的最后提交(类型为“git log foo.cc”)。 获取所有提交并通过它们。 在提交树中查找文件。 问题是,所有提交都包含我感兴趣的文件。 提交树是否假设包含仅提交的文件,或者假定提交时树包含完整的树?提交树包含完整的工作树

如果该树应该已满: 如何知道文件(TreeEntry)是否在特定提交中被修改?

谢谢!

+0

是的,这是预期的,给定的git commit会存储整个存储库。要查看文件是否更改,可以在给定提交和提交的父级之间区分该文件的树条目。 –

回答

0

在git中,每个提交都包含整个存储库的表示状态。欲了解更多信息,请看here。段落快照没有区别很明显,为什么做出这个选择。注意,如果文件在两次提交之间没有改变,最后一次提交只包含一个指向前一次提交中的文件的指针。您可以比较两个承诺提交的指针以找出差异。另一种方法是使用Edward Thomson评论中提到的diff工具。

+0

澄清:我并不是想暗示应该使用diff工具。这是不必要的。我的意思是建议区分两个提交的树条目(类型/对象ID),步行父母,直到找到第一个区别。 –