我想创建一个项目,该项目从两个存储库中借用,稀疏签出。但是,“ $ {GIT_REPO} / info / sparse-checkout”的格式仅引用路径,而不引用以树状或repo为中心的路径。因此,我似乎无法像在此稀疏签出文件中那样引用特定分支:repo::branch:~/path
因此,以下内容在多个存储库中对我不起作用:
git config core.sparseCheckout true
git remote add -f repo1 git://...
git remote add -f repo2 git://...
echo "path/within_repo/to/desired_subdir/*" > .git/info/sparse-checkout
git checkout [<tree-ish>]
...“ $ {GIT_REPO} / info / sparse-checkout”的格式仅引用路径
是的。
git remote add -f repo1 git:// ...
存储库(和远程名称)不相关;重要的是提交。
因此,我似乎无法引用特定分支...
分支名称也无关紧要。分支机构的名称随时间推移而变化;提交哈希ID不会。每当您想完全特定于某个特定提交时,请使用其哈希ID。
如果稀疏签出文件可以基于提交,这可能会很好,但至少不能轻易做到这一点。您可以:
git show commit-specifier:path
);$(git rev-parse --git-dir)/info/sparse-checkout
;和如果没有给定提交中的备用稀疏签出文件,则可能带有备用默认默认稀疏检出文件。
由于提交哈希ID唯一标识正确的提交,将文件放入专用分支的一种方法是:
sparse-info
git worktree add
)创建这些文件将在其中居住的区域;然后添加一个新文件,您需要在正确的位置进行操作,链接或复制稀疏签出数据,git add
文件以及git commit
结果。
或者,您可以在没有分支的情况下完成所有这些工作,而只需在正常工作树之外的专用工作区域。
最后,考虑为稀疏的结帐文件和过滤器编写自己的格式。然后,只需运行您的过滤器生成器以创建所需的$GIT_DIR/info/sparse-checkout
内容即可。