我有一个Git的repo包含一些大的数据集,我不小心键入了add。因为git总是试图将整个数据集推送到git服务器上。我在这个项目上工作了半年,没有向Github推送任何东西。
现在我想放弃这个提交,只推送我写的代码。但是git不允许我在没有完成最后一次提交之前这样做。我也不想丢失我写的代码。
如何解决?
Git状态
hundred of lines for my previous commit
no changes added to commit (use "git add" and/or "git commit -a")
Git推
Enumerating objects: 2343, done.
Counting objects: 100% (2343/2343), done.
Delta compression using up to 12 threads
Compressing objects: 100% (1795/1795), done.
remote: fatal: pack exceeds maximum allowed size (2.00 GiB)error: RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: CANCEL (err 8)
send-pack: unexpected disconnect while reading sideband packet
Writing objects: 100% (2341/2341), 2.60 GiB | 5.96 MiB/s, done.
Total 2341 (delta 574), reused 2208 (delta 543), pack-reused 0
fatal: the remote end hung up unexpectedly
Everything up-to-date
我想试试git never,但是它可能会删除我的代码。
有一个工具可以帮助你做到这一点:git filter-repo
(链接到github页面)。关于如何安装它,请阅读首页。
在示例一节中有一个指南来做你想做的事情:
部分历史重写
例如,要从主分支中删除名为extraneous.txt的文件:
git filter-repo --invert-paths --path extraneous.txt --refs master