📜  cant-push-to-github-because-of-large-file-which-i-already-deleted - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:14:05.755000             🧑  作者: Mango

解决Git因已删除但较大的文件而无法推送到Github的问题

有时候,在使用Git时可能会遇到一个问题:尽管已经从代码库中删除了一个较大的文件,但Git仍然无法推送到Github。这是因为Git在跟踪历史记录时会保留先前提交中包含的所有文件,即使它们已经被删除了。在本文中,我们将介绍如何解决这个问题。

步骤
1. 找出哪个文件太大了

首先,我们需要找出哪个文件太大了。可以使用以下命令来查看文件大小:

git ls-files -s | sort -n -k 2 | tail -n 10 | cut -c 3- | tr "\n" "\0" | xargs -0 -n1 ls -lh

这个命令将列出最大的10个文件及其大小。找到文件后,您需要将其永久地从历史记录中删除。

2. 从Git历史记录中删除文件

为了将已删除的文件从Git历史记录中删除,我们需要使用git filter-branch 命令。

**注意:**在运行下面的命令之前,请确保已备份您的代码库。此操作将永久地更改历史记录。

git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch <path_to_file>' --prune-empty --tag-name-filter cat -- --all

在上面的命令中,将<path_to_file>替换为需要删除的文件路径。

3. 强行推送到Github

现在,您已经从Git历史记录中删除了较大的文件,但是,您的本地代码库与Github仍然不同步。您需要使用以下命令强制更新Github上的代码库:

git push origin --force --all

这将强制将本地代码库中唯一的主分支推送到Github。

结论

通过遵循上述步骤,您应该能够解决无法将Git推送到Github的问题,并确保代码库的历史记录中不包含已删除的较大文件。此外,我们建议定期清理并定期从代码库中删除较大的未使用文件,以确保代码库的性能和稳定性。