所以。我是git的新手。而且我想我可能已经超出了我的修复能力(hooray)。与GIT历史混淆摧毁最近提交...如何恢复?
这里的故障:
我做了一个远程目录,并意外地包含在最初的一些非常大的文件提交。这使得人们很难用它做任何事情。 (我一开始并没有意识到,并且已经进行了修改,并且一直使用我自己的目录)
我了解到,仅删除文件并提交删除操作并不能帮助克隆目录的人员,并了解通过命令来修改历史,如:
git filter-branch --tree-filter 'rm -f public/vidos/*' HEAD
这会,据我所知,从公共/ VIDOS /目录中删除所有文件,摆脱他们的所有内存。
这似乎发生了。我可以成功克隆(无内存错误),并且克隆副本中没有超大文件。
今天早上(愚蠢地确认我确实匹配了远程存储库后(即摆脱了我所有的本地资料,认为它应该是最新的除了那些大文件以外的任何东西),我开始与在目录中,并实现了所有的文件似乎是因为他们在初始检查(无修改,有事情我修改了很多,都显示出来)
我做
git log
查看所有修改,并可以看到我的所有提交(包括从目录中删除超大文件的提交)。我没有
git reset hashcode
回滚到适当的混帐(与我从日志中得到的散列码)。
除...即使它认为我是在正确提交,文件仍等同于那些我在第一次开机。
我可以回头看看自己的历史,看到我没对任何目前未修改的文件都进行过滤分支...我真的很困惑,为什么我的更改不再存在。我承诺...我推...我非常确定远程存储库有我所有的变化(可以检查出来(会永远耗尽内存,但我会得到的文件),并看到更改.. ......但我再也看不到他们了
我做了些什么愚蠢的东西吗?是否搞乱了历史做了一些我没有意识到的事情?我描述的事情是不是完全不可能搞砸了我的(也就是说,我应该看到一个完全不同的方向吗?)
我真的,真的想让我的修改回来......复制所有的代码(并记住我甚至是DID)将是非常困难的有什么我可以做的吗?
编辑:
~~~~~~~~~~~ 好吧,重置没有工作,但这样做:
git checkout hashcode
似乎工作就好了,我可以看到我的代码改变了。
但是,结帐意味着我不在任何分支,我不能让他们承诺这些变化是最“最近的”(它认为它是最新的)。关于如何让这个承诺成为“头脑”的任何想法?而一旦它是头,那么将摆脱我为了摆脱超大文件而进行的分支过滤吗?如果是这样,有没有人有任何建议,如何摆脱这些超级大文件没有这种头痛再次。
如果没有其他方法,我可以简单地签出两个副本(一个在头,一个在我最后一个好的提交)并手动复制并粘贴好头文件,然后提交?似乎它会工作,但不是很干净。
'git reflog'说什么?在那里你可以找到那里的任何不可达的提交? – VonC 2010-09-28 12:41:05
它说:64e3dcb ... HEAD @ {0}:64e3dcb92ca80d6d53bb92d9470ca269f73ae044:更新HEAD 7d71565 ... HEAD @ {1}:clone:from [email protected]:/ var/git/pcms_vodpop – Jenny 2010-09-28 12:46:43
但是...恩......我感觉它太短了,因为我愚蠢地删除了我的本地副本,并将其克隆出来以测试克隆是否仍在工作。 – Jenny 2010-09-28 12:47:06