Newb问题,我想确保理解这一点。
当我git checkout <revision>
时,这会将整个项目返回到当时的状态,还是仅重新创建特定版本中更改的文件?
例如:如果我的文件夹除了.git repo和I git checkout master
之外是完全空的,那么生成的文件是完整的项目,还是只有最近提交中更改的文件?
我问,因为我在各个点(从头开始)检查我的项目,而不是像预期的那样缓慢增长的项目,每个结账的大小变化很大。
答案 0 :(得分:3)
当我
git checkout <revision>
时,这会将整个项目恢复到当时的状态,还是只重新创建特定的> em>修订?
如果您的工作树和暂存区域完全为空(当然除.git
子目录外)并且您运行
git checkout <revision>
然后您的工作树和暂存区域将完美地反映该特定修订版的内容。
另一方面,如果在运行git checkout
时工作树不为空,则会发生更微妙的事情,可能会分为三种情况:
-f
标志)告诉您关闭并中止结账。或[...]每张结帐的大小差异很大。
您是否考虑过未跟踪的文件?你提交了,然后删除大文件?根据您单独提出的问题中提供的信息,我们可以做的只是假设大小变化很大的原因。
答案 1 :(得分:1)
从工作树中的documentation:&#34;更新文件中匹配索引或指定树中的版本。 &#34;对于您的示例,它将在结帐时将存储库返回到完整状态。
然而,正如Jubobs指出,如果您自上次结账后对存储库的状态进行了任何更改,则行为会有所不同。如果是这样的话,他的回答比我的更全面。
另请注意,这仅适用于git跟踪的文件,因此您所处的任何其他文件都不会受到影响。