所以我最近做了愚蠢的事情
git add -A
在我的工作目录中添加了一些我不想添加的大型数据文件(> 1 GB)。愚蠢的是,我承诺,当我试图向Github推销时,Github抱怨我没有足够的空间因此无法推动(完全合理)。鉴于我处于某些代码的中间,我继续推进我的项目,在拥有大数据文件的原始提交之上进行了一些提交。所以现在,我遇到了无法推送的4个本地提交,因为我在第一次提交时有那些大数据文件。是否有任何干净的方法来解决此,而不用更改当前工作目录中的任何内容(自从第一次提交大文件以来,我已添加了很多代码更改)。
谢谢!
答案 0 :(得分:2)
首先存储/提交你剩下的任何代码,然后重新命名回你要编辑的提交,(我使用的一种简单方法是从git log获取哈希值并添加~
以表示我想要亲本)
git rebase -i a1b2c3~ # replace with your hash and don't forget the ~
您将获得一个交互式编辑器,将错误提交从pick
更改为edit
或仅e
,然后保存并退出
rebase将在错误提交时停止,现在您要删除大文件,但同时又不想删除它,因此您可以向{--cached
添加git rm
1}}
git rm --cached /path/to/huge/file
这会将其从索引中删除,但不会从本地系统中删除,然后我们要将此更改保存到提交
git commit --amend # or just --am
现在提交不再包含巨大的文件,所以我们告诉git继续使用rebase
git rebase --continue
这将添加剩余的提交,现在您将发现您没有未跟踪的大文件。
如果你藏起来,那么现在就是解开的时间了。
答案 1 :(得分:1)
有完全相同的问题(到信中),并花了一整天才找到答案。在这里找到它......
How do I delete unpushed git commits?
而不是在你丢失工作目录变化的情况下进行硬重置,而不是硬重置。像馅饼一样容易(一旦你知道如何,1意味着回去1提交..)
git reset --soft HEAD~1