GIT: 无法从存储库中删除文件
GIT: Unable to delete file from repo
目前,我们被迫将我们的存储库从 Gitlab 迁移到 Github。当我们想使用 "git push -u origin master" 将我们的 repo 推送到 Github 时。不幸的是,这会导致以下错误(复制输出 1):
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: error: File Data/Setup/Database.2.7.0.1.accdb is 426.50 MB; this exceeds GitHub Enterprise's file size limit of 200.00 MB
remote: error: File Data/DPM/Database 2.4.0.0.accdb is 422.12 MB; this exceeds GitHub Enterprise's file size limit of 200.00 MB
remote: error: File Data/Setup/Database 2.5.0.1.accdb is 422.00 MB; this exceeds GitHub Enterprise's file size limit of 200.00 MB
remote: error: File Data/Setup/Database 2.6.0.0.accdb is 421.98 MB; this exceeds GitHub Enterprise's file size limit of 200.00 MB
(and more ...)
删除文件是不够的,因为它包含在以前的提交中。我们尝试了以下建议的修复:
https://medium.com/@mrkdsgn/fixing-the-gh001-large-files-detected-you-may-want-to-try-git-large-file-storage-43336b983272。我们尝试使用以下命令从整个存储库中删除所有访问数据库:
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch Data/\*accdb'
输出如下(复制输出2):
(starting from 1/1398...)
Rewrite 9f3d64449f73d663bfa3c657b7a9406bb153d040 (1394/1398) (2452 seconds passed, remaining 7 predicted) rm 'Data/Setup/Database.2.7.0.1.accdb'
Rewrite 8804497bd5d2db157deb3f169764bd230fbd5379 (1395/1398) (2454 seconds passed, remaining 5 predicted) rm 'Data/Setup/Database.2.7.0.1.accdb'
Rewrite de9e3cc72501c056696b7e327e5c957016f69247 (1396/1398) (2456 seconds passed, remaining 3 predicted) rm 'Data/Setup/Database.2.7.0.1.accdb'
Rewrite c6cb5be434b7ad7a132a383995add34fe6176506 (1397/1398) (2457 seconds passed, remaining 1 predicted) rm 'Data/Setup/Database.2.7.0.1.accdb'
Rewrite 01f39409430cd15a638c99f788a8acce69b9de0b (1398/1398) (2459 seconds passed, remaining 0 predicted) rm 'Data/Setup/DPM Database.2.7.0.1.accdb'
Ref 'refs/heads/Branch_Jack' was rewritten
我们似乎删除了 "exceed Github limit" 错误中出现的所有扩展名为 .accdb 的文件。但不幸的是,当我们再次执行 "git push -u origin master" 时,我们收到与 (Copied Output 1) 中相同的错误。
有没有人对我们做错了什么提出建议?我们如何删除 repo 中的访问数据库?
PS。我们尝试了中描述的方法
https://git-scm.com/book/en/v2/Git-Internals-Maintenance-and-Data-Recovery 也在 "removing object" 下。垃圾收集和 git prune -expire now 的额外步骤没有解决问题。
我想最有可能的问题是您是否没有过滤 master
的整个历史记录。您给出的 filter-branch
命令只会过滤当前 HEAD
的历史记录。如果你只是想push master,你可以说
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch Data/\*accdb' -- master
或者,如果您想从整个存储库历史记录中删除该文件,您可以说
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch Data/\*accdb' -- --all
请记住,在 运行 另一个 filter-branch
命令之前,您必须删除 original/
引用(如果您还没有删除的话)。 (这些引用也会阻止使用 gc
清理本地仓库的尝试,但我怀疑这真的是个问题。发送到服务器的包 应该 只包含可访问的对象。 .. 我不知道文档是否保证了这种行为,但我不认为我曾经观察过其他情况。)
如果仍然不能解决问题,我们可能需要更多信息。确保错误消息仍然完全相同(不仅仅是相同的一般错误,但可能指的是其他 objects/paths,例如)。
目前,我们被迫将我们的存储库从 Gitlab 迁移到 Github。当我们想使用 "git push -u origin master" 将我们的 repo 推送到 Github 时。不幸的是,这会导致以下错误(复制输出 1):
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: error: File Data/Setup/Database.2.7.0.1.accdb is 426.50 MB; this exceeds GitHub Enterprise's file size limit of 200.00 MB
remote: error: File Data/DPM/Database 2.4.0.0.accdb is 422.12 MB; this exceeds GitHub Enterprise's file size limit of 200.00 MB
remote: error: File Data/Setup/Database 2.5.0.1.accdb is 422.00 MB; this exceeds GitHub Enterprise's file size limit of 200.00 MB
remote: error: File Data/Setup/Database 2.6.0.0.accdb is 421.98 MB; this exceeds GitHub Enterprise's file size limit of 200.00 MB
(and more ...)
删除文件是不够的,因为它包含在以前的提交中。我们尝试了以下建议的修复: https://medium.com/@mrkdsgn/fixing-the-gh001-large-files-detected-you-may-want-to-try-git-large-file-storage-43336b983272。我们尝试使用以下命令从整个存储库中删除所有访问数据库:
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch Data/\*accdb'
输出如下(复制输出2):
(starting from 1/1398...)
Rewrite 9f3d64449f73d663bfa3c657b7a9406bb153d040 (1394/1398) (2452 seconds passed, remaining 7 predicted) rm 'Data/Setup/Database.2.7.0.1.accdb'
Rewrite 8804497bd5d2db157deb3f169764bd230fbd5379 (1395/1398) (2454 seconds passed, remaining 5 predicted) rm 'Data/Setup/Database.2.7.0.1.accdb'
Rewrite de9e3cc72501c056696b7e327e5c957016f69247 (1396/1398) (2456 seconds passed, remaining 3 predicted) rm 'Data/Setup/Database.2.7.0.1.accdb'
Rewrite c6cb5be434b7ad7a132a383995add34fe6176506 (1397/1398) (2457 seconds passed, remaining 1 predicted) rm 'Data/Setup/Database.2.7.0.1.accdb'
Rewrite 01f39409430cd15a638c99f788a8acce69b9de0b (1398/1398) (2459 seconds passed, remaining 0 predicted) rm 'Data/Setup/DPM Database.2.7.0.1.accdb'
Ref 'refs/heads/Branch_Jack' was rewritten
我们似乎删除了 "exceed Github limit" 错误中出现的所有扩展名为 .accdb 的文件。但不幸的是,当我们再次执行 "git push -u origin master" 时,我们收到与 (Copied Output 1) 中相同的错误。
有没有人对我们做错了什么提出建议?我们如何删除 repo 中的访问数据库?
PS。我们尝试了中描述的方法 https://git-scm.com/book/en/v2/Git-Internals-Maintenance-and-Data-Recovery 也在 "removing object" 下。垃圾收集和 git prune -expire now 的额外步骤没有解决问题。
我想最有可能的问题是您是否没有过滤 master
的整个历史记录。您给出的 filter-branch
命令只会过滤当前 HEAD
的历史记录。如果你只是想push master,你可以说
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch Data/\*accdb' -- master
或者,如果您想从整个存储库历史记录中删除该文件,您可以说
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch Data/\*accdb' -- --all
请记住,在 运行 另一个 filter-branch
命令之前,您必须删除 original/
引用(如果您还没有删除的话)。 (这些引用也会阻止使用 gc
清理本地仓库的尝试,但我怀疑这真的是个问题。发送到服务器的包 应该 只包含可访问的对象。 .. 我不知道文档是否保证了这种行为,但我不认为我曾经观察过其他情况。)
如果仍然不能解决问题,我们可能需要更多信息。确保错误消息仍然完全相同(不仅仅是相同的一般错误,但可能指的是其他 objects/paths,例如)。