根据Subdirectory Checkouts with git sparse-checkout,在已经存在的存储库的情况下配置稀疏结账后,一个调用git read-tree -mu HEAD
,即:
# Enable sparse-checkout:
git config core.sparsecheckout true
# Configure sparse-checkout
echo some/dir/ >> .git/info/sparse-checkout
echo another/sub/tree >> .git/info/sparse-checkout
# Update your working tree:
git read-tree -mu HEAD
read-tree
步骤?read-tree
而不是checkout
?-mu
(为什么这是合并,以及合并的内容)?-m
Perform a merge, not just a read. The command will refuse to run if your index file has unmerged entries, indicating that you have not finished previous merge you started.
-u
After a successful merge, update the files in the work tree with the result of the merge.
答案 0 :(得分:1)
使用Git 2.25(2020年第一季度),稀疏签出工作树的管理获得了专用的“稀疏签出”命令。
它引入了圆锥模式(我在“ Git sparse checkout with exclusion”中有详细介绍),这将使sparse-checkout
必须更快。
但是它也间接描述了为什么使用git read-tree -mu HEAD
(或者,在新的“圆锥”模式下,使用了 )。
请参见commit e6152e3的Jeff Hostetler (Jeff-Hostetler
)(2019年11月21日)。
请参见commit 761e3d2的Ed Maste (emaste
)(2019年12月20日)。
请参见commit 190a65f(2019年12月13日)和commit cff4e91,commit 416adc8,commit f75a69f,commit fb10ca5,commit 99dfa6f,commit e091228,{ {3}},commit e9de487,commit 4dcd4de,commit eb42fec,commit af09ce2,commit 96cc8ab,commit 879321e,commit 72918c1,{{3 }},commit 7bffca9,commit f6039a9,commit d89f09c(2019年11月21日)由commit bab3c35。
(由commit 94c0956在Derrick Stolee (derrickstolee
)中合并,2019年12月25日)
Junio C Hamano --
gitster
--:正在更新工作目录签名人:Derrick Stolee
内置的稀疏签出使用'
git read-tree -mu HEAD
'来更新索引中的skip-worktree位并更新工作目录。
这个额外的过程过于复杂,容易失败。它还要求我们在尝试更新索引之前将更改写入稀疏签出文件。通过创建对
unpack_trees()
的直接调用来删除此额外的过程调用。
另外,提供一个内存中的模式列表,这样我们就可以避免从稀疏签出文件中读取内容。这使我们能够在写入文件之前测试对文件的建议更改。此修补程序的较早版本包含一个错误,因为“稀疏检出在工作目录上没有任何条目”错误导致“
git read-tree -mu HEAD
”命令失败。
它不会回滚set
文件,因此重播旧的稀疏检出规范将失败。现在,t1091中的测试涵盖了该情况。