【问题标题】:When I git clone : fatal: does not appear to be a git repository当我 git clone : fatal: 似乎不是 git 存储库时
【发布时间】:2020-06-11 10:15:48
【问题描述】:

为什么我在使用 git push、show、fetch、clone 时总是得到“致命:似乎不是 git 存储库”。

我使用 repo 作为我的裸存储库。

git remote add origin user@dev.com:/home/administration/repo
git push origin master
fatal: '/home/administration/repo' does not appear to be a git repository
fatal: Could not read from remote repository.

我已经用我的远程 url 尝试了很多模式。

喜欢

user@dev.com/home/administration/repo
user@dev.com//home/administration/repo
ssh://user@dev.com/home/administration/repo

但是,所有的结果都是一样的。

步骤:

-Server(user@dev.com/home/administration/)
    $ mkdir repo
    $ cd repo
    $ git init --bare
    Initialized empty Git repository in /home/administration/repo/
    $ ls -a
    .  ..  branches  config  description  HEAD  hooks  info  objects  refs
-local
    $ git clone user@dev.com:/home/administration/repo
    warning: You appear to have cloned an empty repository.(repo directory has been created at local)
    $ cd repo
    $ git remote add origin user@dev.com:/home/administration/repo
    $ git remote -v
    origin  user@dev.com:/home/administration/repo (fetch)
    origin  user@dev.com:/home/administration/repo (push)

我只是删除了我在本地由 vsCode 创建的 .git 目录。

然后就可以了。

我可以克隆 repo。

但是,我还是无法通过 vsCode 推送。

当我使用 vsCode 推送时,它返回

权限被拒绝,请重试。

权限被拒绝,请重试。

user@dev.com:权限被拒绝(公钥、gssapi-keyex、gssapi-with-mic、密码)。

致命:无法从远程存储库读取。

请确保您拥有正确的访问权限并且存储库存在。

我猜是 ssh 的密码问题,但是我在 vsCode 中无法输入密码。

我试试@VonC的方法

我的操作系统是 Win10

-local
    > ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/username/.ssh/id_rsa):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/username/.ssh/id_rsa_ubuntu.
    Your public key has been saved in /home/username/.ssh/id_rsa_ubuntu.pub.
    The key fingerprint is:
    SHA256:nNnQckFbuegUs4WD3y+7YqwCaDhfUlX2J17jxF7X3FU xenby@demo.com
    The key's randomart image is:
    +---[RSA 2048]----+
    |       .o++ ..  E|
    |      .  *o+.  ..|
    |     .  = *+ o ..|
    |    .  . Ooo+ * +|
    | . o    Soo..B o.|
    |o + o     . ..o  |
    | + o .   .  . .  |
    |  .   .   +  o   |
    |       ..o .o.   |
    +----[SHA256]-----+
    > cp C:\Users\UserName\.ssh\id_rsa.pub C:\Users\UserName\authorized_keys
-Server
    > mkdir ~/.ssh
-local(Windows doesn't exist "ssh-copy-id",so I use scp)
    > scp authorized_keys user@dev.com:~/.ssh
    user@dev.com's password:
-Server
    > chmod 700 ~/.ssh
    > chmod 600 ~/.ssh/authorized_keys

做完这些事情后,我在使用 ssh user@dev.com 时仍然需要输入密码......

我的问题是什么?

【问题讨论】:

  • 您是否将远程创建为git init --bare
  • 目标 repo 文件夹是否包含 .git 文件夹?
  • 您可以点击:“git config --list”命令并显示结果吗?和“git show”命令。
  • @DaemonPainter 是的,我做到了。
  • 据我所见,该 URL 已正确解析,但指向的不是 git 存储库。

标签: git ssh


【解决方案1】:

VSCode SSH troubleshooting 页面中所述,如果您的私钥受密码保护,您应该首先启动一个 ssh-agent。

但如果你可以手动推送,但必须输入用户密码(而不是密钥密码),这实际上意味着公钥没有添加到~user/.ssh/authorized_keys

如果您可以克隆,那应该不是您的问题。如果您可以克隆,则不必执行git remote add origin ...:在克隆期间已经设置了远程来源。

【讨论】:

  • 正如我之前搜索的那样,有很多回复就像你回答我一样。我不能在服务器上使用root,所以我想要求另一个答案。嗯……看来这是唯一的答案了。
  • @Sanji 您在生成新密钥时是否将密码留空了?
  • 是的,我什么都不输入
  • 你能不能输入 GIT_SSH_COMMAND="ssh -v",然后从同一个 CMD 会话启动 VScode 以继承该变量。然后在 VSCode 中打开 Git 控制台,尝试推送:应该会看到关于 ssh 连接的日志。
  • 仍然得到相同的响应。权限被拒绝,请重试。权限被拒绝,请重试。 user@dev.com:权限被拒绝(公钥、gssapi-keyex、gssapi-with-mic、密码)。致命:无法从远程存储库中读取。请确保您拥有正确的访问权限并且存储库存在。
【解决方案2】:

在本地文件系统中创建本地 GIT 存储库

从您要托管远程存储库位置的目录中

  • git init --bare repoName.git 创建一个名为 repoName.git 的存储库,可用作远程以及内部所有必需的文件

从您想要连接到远程存储库的目录中,具有有效的启用 GIT 的项目代码

  • git remote add origin "/path/to/my/repoName.git"添加上面创建远程仓库的路径
  • git remote -v 检查远程定位路径是否正确
  • git push --set-upstream origin master推送代码并设置upsteam为分支master
  • git push origin 后面的所有推送语法

将此存储库克隆到新目录中

从新目录

  • git clone "path/to/my/repoName.git" newDirName 将存储库克隆到新目录中

【讨论】:

  • 谢谢你的回答,但我认为它没有抓住我的意思。
  • @Sanji,能否请您尝试在服务器本身设置本地克隆存储库以确保命令和连接有效?
  • 我现在不仅可以克隆存储库,还可以通过 git bash 推送我的提交。但是,我想在不输入密码的情况下使用 VScode 来推送我的提交。这个问题现在困扰着我。
  • 你是否为你的git设置了如下配置:git config --global user.name = "<name>"git config --global user.email = "<email>"
  • 是的,我有。我可以在提交日志中看到我的用户名。
猜你喜欢
  • 2020-09-14
  • 2012-04-20
  • 2021-07-28
  • 2017-01-26
  • 2013-08-26
  • 1970-01-01
  • 1970-01-01
  • 2015-07-01
  • 2015-12-30
相关资源
最近更新 更多