当我执行 git clone 命令时,出现了致命错误:似乎不是一个git仓库

3

当我使用git push、show、fetch、clone时,为什么总是会出现"fatal: does not appear to be a git repository"的错误提示?

我使用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目录。

然后它可以正常工作。

我可以克隆仓库。

然而,我仍然不能通过vsCode推送。

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

Permission denied, please try again.

Permission denied, please try again.

user@dev.com: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)。

fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists。

我猜这是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 命令创建了那个远程仓库吗? - Daemon Painter
1
目标仓库文件夹中是否包含.git文件夹? - evolutionxbox
请执行命令 "git config --list" 并展示结果,以及执行命令 "git show"。 - Ennar.ch
@DaemonPainter 是的,我做了。 - Sanji
从我看到的情况来看,URL 被正确解析,但指向的不是一个 git 仓库。 - Daemon Painter
我将展示我的步骤。 - Sanji
2个回答

2
如在 VSCode SSH 故障排除 页面中所述,如果您的私钥受到密码保护,则应首先启动 ssh 代理。但是,如果您可以手动推送,但必须输入用户密码(而不是密钥密码短语),则实际上意味着公钥未添加到~user/.ssh/authorized_keys中。如果您可以克隆,则不必执行git remote add origin ...:在克隆期间已经设置了远程 origin。

是的,我什么也没键入。 - Sanji
仍然得到相同的响应。 权限被拒绝,请重试。 权限被拒绝,请重试。 user@dev.com: 权限被拒绝(publickey,gssapi-keyex,gssapi-with-mic,password)。 致命错误:无法从远程存储库读取。请确保您具有正确的访问权限并且存储库存在。 - Sanji
@Sanji,使用ssh-v命令,你应该会看到很多日志。 - VonC
现在我可以在VScode中使用git bash,然后输入命令GIT_SSH_COMMAND="ssh -v"。 我可以使用git bash在VScode中输入命令和密钥密码进行推送。 但是当我在VScode中使用git时,我仍然得到相同的响应,没有更多信息。 - Sanji
在VScode中登录git日志
git push -u origin b1 权限被拒绝,请重试。 权限被拒绝,请重试。 user@dev.com:权限被拒绝(publickey,gssapi-keyex,gssapi-with-mic,password)。 致命错误:无法从远程存储库读取。
请确保您具有正确的访问权限并且存储库存在。
- Sanji
显示剩余5条评论

1

在本地文件系统中创建本地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 推送代码并将上游设置为master分支
  • git push origin 所有后续推送语法

在新目录中克隆此存储库

从新目录开始

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

谢谢您的回答,但我认为它没有抓住我的重点。 - Sanji
@Sanji,你能否尝试在服务器上设置本地克隆的存储库,以确保命令和连接有效吗? - RICHARD ABRAHAM
现在我不仅可以通过git bash克隆存储库,还可以推送我的提交。 然而,我想使用VScode而无需输入密码即可推送我的提交。 这个问题正在困扰着我。 - Sanji
你是否已经为你的git设置了以下配置:git config --global user.name = "<name>"git config --global user.email = "<email>" - RICHARD ABRAHAM
是的,我有。我可以在提交日志中看到我的用户名称。 - Sanji
“path in” 是什么意思?: git clone user@server:path/to/my/repo - Mohammad Afrashteh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接