我的情况很特殊,我添加了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
答案 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
中。