Git仓库如何仅下载需修改提交的文件?避免全量下载大SQL文件
问题:Git稀疏检出大文件后提交仍下载全部文件?
我们的Git仓库包含多个100MB至10GB的大型SQL文件,希望实现本地仅按需下载需修改提交的SQL文件,而非克隆时就下载所有文件。
我尝试了以下命令,修改文件前的流程都正常,但提交修改时会自动下载当前分支的所有文件:
git clone --filter=blob:none --depth 1 -n --sparse <url> cd <repoDir> git sparse-checkout set <fileNeedingChangedAndCommitted> git restore --staged . git restore <fileNeedingChangedAndCommitted> # 此时目标文件已下载到本地,可正常修改 # 修改文件内容 git add <fileNeedingChangedAndCommitted> git commit -m "test" # 此时当前分支的所有文件都会被自动下载,哪怕未做修改
原本以为通过稀疏检出可以实现需求,但显然对sparse-checkout的逻辑存在误解,或者遗漏了关键步骤。是否有办法做到仅下载需修改的文件,提交时不触发全部分支文件下载?
临时解决方案
经测试及验证,Git原生无法实现该需求。我们采用的临时解决办法是:将每个SQL文件放在同一仓库的独立孤立分支中,每个文件拥有独立的提交历史。这样操作时只需检出目标分支/文件,修改提交过程中不会触发其他SQL文件的Blob或哈希下载,满足了当前的需求。
内容的提问来源于stack exchange,提问作者Eschin Tenebrous
相关产品推荐
相关产品推荐

