繁体   English   中英

Git克隆:“您似乎克隆了一个空存储库”

[英]Git clone: "You appear to have cloned an empty repository"

我和一些同事一直在研究一个存储在私有 git 存储库中的项目。 历史上没有问题,但最近我尝试克隆,遇到以下问题:

Cloning into 'project'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.

一个git log提供:

致命的:您当前的分支 'master' 还没有任何提交

这是不正确的——我的同事在 12 月 6 日推送了大量(非空)更改(尽管现在该分支未在 --single-branch 克隆尝试中显示)。 当他 ssh 进入 git 存储库时,那里有很多目录结构。

所以我的问题:

  1. 这怎么可能发生?
  2. 我们如何恢复存储库? 似乎这些东西在远程仓库上,但由于某种原因,它不知道它在那里。

如果 repo 托管在 gitlab server 上,并且您使用 git over http克隆 repo,它可能与此有关:

如果giltab-git-http-server配置不正确,Git over HTTP 将收到一个空的 repo

如果由于某种原因gitlab-git-http-server未正确配置,或者您正在使用直接转发到 Unicorn 的自定义 nginx 或 Apache 代理,并且您尝试通过 HTTP 克隆,则请求成功,您会收到 200 和空回购。

一个快速的解决方法是使用git over ssh来克隆 repo。

您已经克隆了正确的存储库。 我认为他们还没有推入 master 分支。 其他分支将在那里,例如 origin/development-example。 您需要创建一个可以跟踪远程分支的本地分支,然后您才能获取最新代码。 这是您可以跟踪远程分支的方式:

git branch --track dev-example origin/dev-example
git checkout dev-example

当您克隆没有提交的新创建的存储库时会发生这种情况。

正如它所说,这只是一个警告。 如果预计存储库中没有任何内容,您可以继续添加文件并提交和推送。

如果它不应该为空,请联系给你链接的人/管理员。

就我而言,当我试图从另一台机器克隆一个 repo 时,这是一个愚蠢的错误:我在 URL 中使用https而不是ssh作为协议。 令人惊讶的是,我没有收到错误消息,而是出现“您似乎克隆了一个空存储库”的消息。

我的一个同事刚刚遇到了类似的问题。 坦率地说,我不知道为什么会这样,因为一个简单的 HTTPS 克隆对我们团队的其他成员都有效。 但是,最终,这是一个有帮助的解决方案 - 我们必须做基本相同的操作,而不是git clone ,但手动操作:

  1. 为您的项目创建一个空文件夹,例如project/
  2. project/中,运行git init
  3. 添加远程: git remote add origin https://github.com/yourAccount/yourrepo.git
  4. 从远程拉取: git pull origin master

迁移到新的 gitlab 服务器后遇到了同样的问题。 执行以下步骤后已修复:即项目 URL:http://gitlab.abc.work/neptune-open/neptune-developer-guide.git

  1. git clone git@gitlab.abc.work/neptune-open/neptune-developer-guide.git
  2. vi neptune-developer-guide/.git/config,将“origin” url 更改为 http 格式。 [远程“起源”] url =http://gitlab.abc.work/neptune-open/neptune-developer-guide.git
  3. 修改项目中的任何文件
  4. cd neptune-developer-guide && git add 。 && git commit -m "修复 git 克隆问题"
  5. git push 起源大师

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM