4

我对 git 有点陌生,但我从他们的网站上阅读了 Git 书。所以我开始使用一个安装在我的服务器上的 GitLab。

我之前在 SVN 上工作,所以第一次提交是 SVN 的导出。我的朋友也在从事同一个项目(他的名字叫 Lucas)。

我创建了一个分支origin/dev以使origin/master完全稳定,然后在 /dev 上进行开发。我还创建了一个我正在研究的分支feature258 。当我尝试在合并我的强大功能之前拉取源/开发以获取更改时,我有这个:

$ git pull origin dev
fatal: object 18c29b4c26d7b0d34719d10ada6901c6024f91e6 is corrupted
fatal: The remote end hung up unexpectedly

看来18c29b4对象是粉红色的提交(cf ScreenShot),它只修改了一点 .gitignore 文件

我跑了git fsck --full但我得到的线索对我没有帮助:

$ git fsck --full
dangling blob 0c87d2eb401651ec3045eb0248d54ed546206dbe
dangling blob 1cd17aadc009ba9d39d1137533d65107ca54da95

blob 0c 和 1c 只是我在上次提交 feature_258 时修改的一个文件。

我在 Google 上搜索了 3 个多小时,发现 Linus Torvalds 方法和其他 StackOverflow 帖子,但没有找到好的解决方案。

如果它可以拯救我,也许我可以在 BAD 提交之前重新建立分支并重新做我的工作(我保存在另一个目录中以确保)

SourceTree 截图

4

1 回答 1

1

通常是这样的:

fatal: The remote end hung up unexpectedly

告诉连接终止。也许(也许)这不是 Git 回购问题,而是某种系统问题。如果我是你,我会从检查 repo 中的文件权限开始。如果您使用的是 gitolite,那么它将类似于:

chown git:git -R $GITOLITE/repositories/my_repo.git/
chmod u+rw -R $GITOLITE/repositories/my_repo.git/

然后,如果它不是问题,我会尝试在服务器上克隆 repo :

git clone $GITOLITE/repositories/my_repo.git/ ~/test_clone.git

还有一个建议 - 以用户git登录并检查 git 版本。

于 2012-12-15T08:02:33.897 回答