删除卡在 Git Push 上的大文件

Tho*_*Byy 0 git push

我有一个独特的情况,我添加了 2 个 >50MB 的文件,但 Git 无法处理它们。我已经提交了它们并尝试推动,但它出错并说它太大了。现在我可以解决这个问题,但现在我已经在添加我想保留的文件的同时和之后进行了更改。所以现在我有 8 个提交准备好推送,一旦我可以摆脱大文件并让它再次工作。

我用过git rm --cached largefile.whatever,看不到大文件,git diff --stat --cached origin/master但是当我推送时,它仍然推送20分钟,然后说文件太大。

我还删除了大文件并推送了删除,但仍然存在同样的问题。

我想保留所有最近的工作,但删除大文件并继续。我怎样才能做到这一点?

这是我的提交过程。我希望回去也能那么容易,但我现在给自己挖了一个坑。我对 git 不是最擅长,所以我希望这是有道理的。

我不能git rm,因为该文件已被删除。它没有显示在目录中并说myfile.tif did not match any files

git 日志

leg*_*cia 5

您可以尝试进行“交互式变基”。“变基”通常意味着将一组提交移动到不同的基础提交上,但在这种情况下,我们会将提交变基到它们所在的树中的同一位置,仅利用该命令的“交互式”功能。

假设添加大文件的提交的提交 ID 是abc123。然后你会运行:

git rebase --interactive abc123^
Run Code Online (Sandbox Code Playgroud)

(注意后面的插入符号:我们正在重新定位到该提交的父级)

这将使您进入一个文本编辑器,其中包含如下内容:

pick abc123 New garage, touch ups to lava 3
pick def456 ADded garage play, removed giant Tif file
[ ... and so on ... ]
Run Code Online (Sandbox Code Playgroud)

在第一行,更改pickedit,然后保存并退出。 git rebase现在将进入该提交已暂存但尚未提交的状态,您可以修改该提交:

git rm --cached my-large-file.tiff my-other-large-file.tiff
Run Code Online (Sandbox Code Playgroud)

然后输入git rebase --continue. 它将创建一个新的提交,具有与旧提交相同的提交消息和相同的内容,但没有大文件。然后,它将在新创建的提交之上对所有以下提交进行变基。

完成所有这些后,您将拥有一个没有任何大文件痕迹的新分支,准备合并到master.