Git 删除添加的带有大文件的提交

Posted

技术标签:

【中文标题】Git 删除添加的带有大文件的提交【英文标题】:Git Remove Added Commits with Large Files 【发布时间】:2021-12-22 22:03:35 【问题描述】:

我不小心在我的 git 提交中添加了一些大文件。在此之后,我删除了大文件,现在我想提交剩余的更改(不包括大文件),但不知何故,大文件的删除仍在我的 git 历史记录中,因此我无法进行任何进一步的提交。我不想 git reset HARD 或其他东西而丢失很多我的本地更改。我该如何解决这个问题?

我的步骤:

git add -A
git commit -m "Commiting with Large Files"
git push origin main
-- Failed to push due to Large files

现在我从本地机器中删除这些大文件并尝试再次推送

git add -A
git commit -m "Commiting with deleted large files"
git push origin main
-- Failed to push 

我试过了

git reset --soft HEAD~1
git reset

但我仍然将已删除的文件作为未暂存的更改,这阻止了新的 git add -A 和推送。

Unstaged changes after reset:
D   largefile/b_qty.tar.gz
D   largefile/b_qty.txt
D   largefile/s_qty.tar.gz
D   largefile/s_qty.txt 

关于如何解决此问题的任何建议?我真的不能丢失任何本地更改。

【问题讨论】:

【参考方案1】:

如果我理解得很好,你有以下提交:

def - Commiting with deleted large files
abc - Commiting with Large Files

因此,当您撤消提交 def 时,git 仍将这些文件视为已删除是正常的:您仍然在添加这些文件的地方提交 abc

如果您想更好地查看提交图,请尝试:

git log --all --graph --oneline --decorate

这将帮助您进行诊断。可能你应该重写你的两个提交,所以

git reset HEAD~2

可能会成功,但再次:分析您的 git 图表以查看您需要做什么,哪些提交要重置,...

【讨论】:

【参考方案2】:

尝试使用 git restore --staged .

要取消暂存文件或取消暂存特定文件,请使用

git restore --staged <individual_file>

【讨论】:

以上是关于Git 删除添加的带有大文件的提交的主要内容,如果未能解决你的问题,请参考以下文章

提交大文件 Laravel 和 Ajax

Git系列github错误提交大文件后剔除的方法

git提交大文件的解决方法

Git从库中移除已删除大文件

Git 提交添加/删除未暂存提交的文件

git抱怨我删除了一个大文件