第一个core.sparsecheckout设置为true。
我创建了一个空的.git/info/sparse-checkout文件。这导致我无法签出最近从远程获取的新分支。
然后我尝试删除空的.git/info/sparse-checkout文件,现在我可以结帐了。
我了解这一事实,我知道我可以在.git/info/sparse-checkout中包含/*来使其工作。
我只是想知道为什么?这背后的理性是什么?这难道不令人困惑吗?
对我来说,一个空的sparse-checkout文件和一个丢失的文件都在说:“稀疏签出没有指定任何东西”,因此git应该签出所有东西。
我想我需要的是对当前选择的更令人信服的解释,而不是它是如何实现的。
发布于 2014-09-25 20:20:01
实际上并非如此:如果.git/info/sparse-checkout存在,稀疏签出机制就会起作用,并查找要签出的文件/文件夹。
if (!o->skip_sparse_checkout) {
if (add_excludes_from_file_to_list(
git_path("info/sparse-checkout"), "", 0, &el, 0) < 0)如果它找不到要签出的文件/文件夹(因为.git/info/sparse-checkout为空),它会签出...没什么。
但如果.git/info/sparse-checkout一开始就不在那里,这根本就不是一个稀疏的结账,它会检查所有的东西。
https://stackoverflow.com/questions/26036086
复制相似问题