Git损坏提交
问题描述:
我对git有点新,但我从他们的网站上读了Git书。 所以我开始在我的服务器上安装GitLab。Git损坏提交
在第一次提交SVN的导出之前,我正在处理SVN。 我的朋友也在研究同一个项目(他的名字是卢卡斯)。
我创建了一个分支出身的/ dev得到产地/主完全稳定并发展在/ dev。 我也创建了一个分支feature258我正在研究。当我试图拉起源的/ dev合并我很大的特点之前获取的变化我有这样的:
$ git pull origin dev
fatal: object 18c29b4c26d7b0d34719d10ada6901c6024f91e6 is corrupted
fatal: The remote end hung up unexpectedly
看来,18c29b4对象是粉色提交(CF截图)这只修改了一下的.gitignore文件
我跑混帐的fsck --full但我有没有帮助我的线索:
$ git fsck --full
dangling blob 0c87d2eb401651ec3045eb0248d54ed546206dbe
dangling blob 1cd17aadc009ba9d39d1137533d65107ca54da95
blob 0c和1c只是我在feature_258上次提交中修改的一个文件。
我在Google上搜索了3个小时后发现Linus Torvalds方法和其他StackOverflow帖子,但没有找到一个好的解决方案。
如果能救我,也许我可以在分支变基之前的错误提交,并重新做我的工作(我保存在另一个目录,以确保)
答
通常这样的:
fatal: The remote end hung up unexpectedly
讲述连接终止。也许(也许)这不是一个Git回购问题,但某种系统故障。如果我是你,我开始检查回购中的文件权限。如果您使用gitolite,那么它会是这样的:
chown git:git -R $GITOLITE/repositories/my_repo.git/
chmod u+rw -R $GITOLITE/repositories/my_repo.git/
然后,如果它不是一个问题,我试图克隆回购服务器上:
git clone $GITOLITE/repositories/my_repo.git/ ~/test_clone.git
而且还有一个建议 - 以用户git登录并检查git版本。
可能重复[如何用我的文件创建的新的替换损坏的Git对象,这很好](http://stackoverflow.com/questions/2183780/how-to-replace-corrupt-git-objects-与新的一个创建从我的文件,其中AR) – 2012-07-17 15:00:18
我不知道明白。我做了:git hash-object -w'file-from-fsck'它告诉我: '95e1180c100930f579854d1fd03f2585eb7e5dc7' 那么我应该怎么做?谢谢你以前的回答! – THClem 2012-07-17 15:26:57
损坏的对象位于'origin'上,而不在您的存储库中。你必须在那里运行'git fsck --full' – fork0 2012-07-17 15:35:02