Git“不似乎是一个git存储库”

26

我正在尝试在服务器上安装 git,但在尝试执行第一次 push 时遇到了问题。 我在服务器上成功安装了 git,并在本地和服务器上创建了仓库,但当我尝试进行第一次 push 时,出现了以下消息:

stdin: is not a tty
fatal: '/my_repo.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

我谷歌了解了一切,并按照找到的所有内容进行了操作,但仍然不起作用。可能是什么问题?


1
远程服务器上的路径真的是/my_repo.git吗?还是在您的主目录或其他地方? - tpg2114
我不确定,所以我尝试使用 my_repo.git/my_repo.git,但都没有起作用。 - romainberger
3
在您的服务器上,进入存储库所在的目录并键入“pwd”。输出是存储库的完整路径,请确保使用该路径。 - tpg2114
1
你的服务器上的存储库安装在哪里?你是使用 ssh 连接到远程服务器吗?你已经验证了 git 之外的 ssh 功能是否正常工作了吗?你是如何将本地存储库连接到远程存储库的 - 你使用了 git clone 吗?你确切输入了什么命令?你使用了 git remote add 吗?再次,确切的命令是什么?你能展示完整的 git push 命令行吗(也就是说,除了简单的 git push 之外,你还输入了其他内容吗)? - larsks
感谢 @tpg2114 给出 pwd 命令,我之前不知道如何获取完整路径。 - romainberger
4个回答

58
我将假设您使用ssh克隆您的存储库。这意味着您需要在ssh地址中提供服务器上存储库的完整路径:
git clone ssh://sshuser@serverIP/full/absolute/path/to/my_repo

注意:如果您的“my_repo”是一个裸仓库(允许推送),那么应该是这样的:
git clone ssh://sshuser@serverIP/full/absolute/path/to/my_repo.git

"

stdin: is not a tty 的意思是,在 sshuser 账户的 .bashrc 中,有些内容需要输入。

"

Abpostman1评论中补充道:

我遇到了这个问题,因为我试图向一个非空的--bare仓库推送。
即使文件完全相同,我也会收到同样的错误信息:“不是git仓库

我不得不备份我的/httpdocs远程文件夹,创建一个空的新的/httpdocs文件夹,再次运行git init --bare并从本地重新推送。

我的远程地址:url = ssh://magento@magento/home/magento/httpdocs(两端都有私钥/公钥)


谢谢,它起作用了,确实是完整路径缺失的问题。然而,“stdin: is not a tty”错误仍然存在,我会尝试修复它。 - romainberger
5
当您引用家目录中的项目时,也可以在路径中使用“”,例如:`ssh://name@server//myproj/`。请注意,此处的“~”表示当前用户的主目录。 - Timmos
是的,对我也有效。谢谢你让我免受挫败的困扰。 - Jamaluddin Rumi
出现这个问题是因为我试图将非空的--bare库进行推送。即使它的文件内容完全相同,我仍然遇到了相同的错误消息:“不是Git存储库”。我必须备份我的/ httpdocs远程文件夹,并创建一个新的空**/httpdocs**文件夹,再次运行git init --bare并从本地重新推送。我的远程地址:url = ssh://magento@magento/home/magento/httpdocs(在两端都有私钥/公钥)。 - Abpostman1
@Abpostman1 谢谢您的反馈。我已将您的评论包含在答案中以增加可见性。 - VonC

11

也许你忘记在远程文件夹上运行 git --bare init 命令了,这就是我的问题所在。


1

非 jailed/non-chrooted Git 用户也可能是问题的源头,设置用户的主目录(~/)也可能有所帮助。例如,更改:

git clone -- 'ssh://user@host:port/dir/repo.git';

to

git clone -- 'ssh://user@host:port/~/dir/repo.git';

相关链接:Git "does not appear to be a git repository"当您使用 ~ 作为路径时,也可以这样做...)


1

或者,您可以简单地使用:

git clone user@server:/full/path/to/your/directory

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