目前我有

空的GitHub回购 SSH服务器恢复(main) 当地的回购

SSH服务器回购是最新的回购(生产站点),所以我从那里克隆了一个Git到本地。然后我尝试做一个git推送到GitHub。

一切都很好,但随后它说一些关于文件名。gz对GitHub太大。我不需要这个文件,所以我运行了几个Git命令从Git缓存中删除它,然后推回到SSH服务器。

我没有看到本地的大文件,但它仍然在SSH服务器上,即使git diff返回什么,git推送返回“一切都是最新的”-即使文件在本地回购中不可见,当我尝试推送到GitHub时,我仍然会得到错误

文件fpss.tar.gz是135.17 MB;这超过了GitHub的文件大小限制100mb

我遵循了“修复问题”列在GitHub帮助下的步骤,所以这不应该已经足够了吗?

当它不在本地或在git status/diff/push中列出时,文件如何仍然在以太中?


当前回答

如果你上传的是你自己的项目,那么只要去目录所在的文件。 删除大文件。 然后点击“view”(窗口文件) 查看->检查隐藏文件夹 然后你就能看到了。”git的文件 删除.git文件 这将删除所有提交历史记录 然后你可以像新的一样推动你的回购…

其他回答

而不是做复杂的事情,复制你的回购(在你的电脑上)到另一个地方。删除大文件。做几个推拉动作。然后你的一些文件就会被像“<<<<<< HEAD”这样的东西弄得一团糟。只需将备份文件复制到磁盘上的旧文件夹中。再做一次添加、提交、推送!

你可以使用

git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch <file/dir>' HEAD

这将删除该文件历史记录中的所有内容。问题是该文件出现在历史记录中。

这个命令会改变提交的哈希值,这可能是一个真正的问题,特别是在共享存储库上。不应该在不了解后果的情况下进行。

编辑:git项目现在建议用户使用git filter-repo而不是git filter-branch。


使用git filter-repo

WARNING: git-filter-branch has a glut of gotchas generating mangled history
         rewrites.  Hit Ctrl-C before proceeding to abort, then use an
         alternative filtering tool such as 'git filter-repo'
         (https://github.com/newren/git-filter-repo/) instead.  See the
         filter-branch manual page for more details; to squelch this warning,
         set FILTER_BRANCH_SQUELCH_WARNING=1.

安装

[brew|pip3|...] install git-filter-repo

使用

要删除路径前缀为example/path/ To /something的任何文件,可以运行

git filter-repo --path example/path/to/something--invert-paths

要删除任何没有路径前缀example/path/ To /something的文件,可以运行

git filter-repo --path example/path/to/something

我遇到了类似的问题,并使用上面的步骤删除文件。它工作得很完美。

然后我得到了一个错误的第二个文件,我需要删除: remote: error: File <path/filename> is 109.99 MB;这超过了GitHub的文件大小限制100.00 MB

我尝试了相同的步骤,得到一个错误:“以前的备份已经存在于<path/filename>”

从这个网站上的研究,我使用命令:git filter-branch——force——index-filter "git rm——cached——ignore-unmatch <path/filename>"——prune-empty——tag-name-filter cat -- --all

工作很好,大文件被删除了。

令人难以置信的是,推送仍然失败了,并出现了另一个错误:curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 104 fatal:远端异常挂起

我通过直接修改.git配置文件- postBuffer = 999999999来修复这个问题

在那之后,推力通过了!

不知怎的,这对我很管用。我尝试了所有的解决方案,但这个命令节省了我的时间。希望这也能帮助到你。


git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch <file/folder path>' --prune-empty --tag-name-filter cat -- --all

请自行承担风险。我不会为你的行为负责。

在根目录下执行该命令

如果你上传的是你自己的项目,那么只要去目录所在的文件。 删除大文件。 然后点击“view”(窗口文件) 查看->检查隐藏文件夹 然后你就能看到了。”git的文件 删除.git文件 这将删除所有提交历史记录 然后你可以像新的一样推动你的回购…