2015-04-18 112 views
1

更改工作目录,以便我最近在做我的工作目录做删除本地提交不Git中

git add -A 

的傻事其中添加了一些大的数据文件(> 1 GB),我不想加。愚蠢的是,我承诺,当试图推向Github时,Github抱怨我没有足够的空间,因此无法推动(完全合理)。鉴于我处于某些代码的中间,我推进了我的项目,在原始提交之上提交了一些提交大量数据文件的提交。所以现在,我坚持4个不能推送的本地提交,因为我在第一次提交中有这些大数据文件。是否有任何干净的方法来解决这个没有改变我当前的工作目录中的任何东西(自第一次提交大文件以来,我已经添加了很多代码更改)。

谢谢!

+0

Git分支*完全一次性*直到你推/分享。不要担心创建新的本地提交(它实际上是最安全的方法!)。只需移动大量提交的“下游” - 一种方法就是重新绑定。 – user2864740

+0

对于重新定义,请参阅http://git-scm.com/docs/git-rebase,因为您已经提交当前工作目录,所有更改都可以返回。 – user2864740

回答

2

首先藏匿/提交你已经离开的任何代码,然后重订回承诺要编辑,(一个简单的方法我用的是正从git的日志哈希并添加~以表明我希望父)

git rebase -i a1b2c3~ # replace with your hash and don't forget the ~ 

你会得到一个交互式编辑器,改变不良的承诺从pickedit或只是e,然后保存退出

底垫将在错误的停止提交,现在你要删除的大文件,但同时你不想删除它,所以你可以添加一个--cachedgit rm

git rm --cached /path/to/huge/file 

这将从指数而不是从本地系统中删除它,然后我们要保存此更改提交

git commit --amend # or just --am 

现在承诺不再包含了巨大的文件,所以我们告诉git的继续重订

git rebase --continue 

这将加入剩余的提交,现在你会发现,你有没有跟踪的大文件。

如果你藏起来了,那么现在将是去除土壤的时间。

0

已经有完全相同的问题(对信),它需要一整天才能找到答案。在这里找到...

How do I delete unpushed git commits?

而是你失去工作目录的变化硬复位的,这是一个软一个。容易如馅饼(一旦你知道如何,1意味着回去1承诺..)

git reset --soft HEAD~1