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 删除添加的带有大文件的提交的主要内容,如果未能解决你的问题,请参考以下文章