删除卡在Git Push上的大文件

时间:2019-04-29 00:02:54

标签: git push

我的情况很特殊,我添加了2个> 50MB的文件,而Git无法处理它们。我已经提交了它们并尝试进行推送,但是它出错并表示太大。可以,现在可以解决,但是现在添加了我想保留的文件之后,我做了一些更改。因此,一旦我可以摆脱大文件并使它再次工作,我现在准备推送8次提交。

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

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

我想保留我最近的所有工作,但删除大文件并继续。我该怎么办?

这是我的提交过程。我希望这很容易回到1,但现在我陷入了一个困境。我不是git最好的人,所以我希望这是有道理的。

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

Git Log

1 个答案:

答案 0 :(得分:2)

您可以尝试进行“交互式变基”。 “重新设置”通常意味着将一组提交移到另一个基本提交上,但是在这种情况下,我们将仅在使用命令的“交互”功能的情况下将提交重新放置到树中它们所在的同一位置。 / p>

假设添加大文件的提交的提交ID为abc123。然后,您将运行:

git rebase --interactive abc123^

(请注意结尾的插入号:我们正在基于该提交的 parent

这将使您进入包含以下内容的文本编辑器:

pick abc123 New garage, touch ups to lava 3
pick def456 ADded garage play, removed giant Tif file
[ ... and so on ... ]

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

git rm --cached my-large-file.tiff my-other-large-file.tiff

然后输入git rebase --continue。它将创建一个新的提交,除了没有大文件外,它具有与旧提交相同的提交消息和相同的内容。然后,它将在新创建的提交的基础上重新放置所有以下提交。

完成所有操作后,您将拥有一个无任何大文件痕迹的新分支,可以合并到master中。