我们有一个包含几个大型 SQL 文件的存储库,大小从 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>
# At this point, the file I need to change is downloaded locally, ready for changes.
# Make changes to file.
git add <fileNeedingChangedAndCommitted>
git commit -m "test"
# At this point, all other files in current branch are downloaded, even if not changed.
我觉得这应该是可能的,但也许我误解了稀疏结帐的概念或遗漏了步骤/细节。
有没有什么方法可以只下载您想要更改的文件,然后提交这些更改,而无需下载当前分支中的每个文件?
编辑:根据我的测试和对这个问题的讨论,我得出结论,使用 Git 无法做到这一点。但是,我们决定将 SQL 文件保留在同一个存储库中的各自孤立的分支中,因此它们各自都有自己的提交历史记录/链,但位于同一个存储库中以便组织。这使我们能够在任何给定时间仅签出我们需要的分支/文件,并进行更改/提交,而无需下载其他 sql 文件的所有 blob/哈希。这不适用于每种情况,但暂时解决了我们的要求 :)