更正 SSH 的 Git 克隆语法

更正 SSH 的 Git 克隆语法

我正在尝试使用 SSH 访问远程 git 存储库,但出现了致命错误 - 我的语法有问题吗?

我在服务器上的 mysite 文件夹中创建了一个 git repo - 因此该 repo 位于 /home/mysite/.git

git clone ssh://root@serverIP/mysite/.git
fatal: could not create work tree dir 'mysite'.: Permission denied

有人能看出我的语法有什么问题吗?或者这里还有其他问题吗?

答案1

尝试使用目标目录的完整路径。例如:

git clone ssh://root@serverIP/mysite/.git /home/user_name/mysite

更新:

当 git 克隆 repo 时,它会根据 repo 的名称为其创建目录。

git clone [email protected]:username/repo.git

Git 将创建目录repo。但是您的例子中没有 repo 名称mysite/.git

答案2

你必须向 ssh 提供你的 repo 的完整路径,而 .git 部分是不必要的,git 可以自行解决这个问题:

git clone ssh://root@serverIP/home/mysite 

已编辑:使用 URL 类型 ssh:// 语法时,我之前使用的冒号无效。还有另一种语法(ssh 样式),需要它:

 git clone root@serverIP:/home/mysite 

我通常更喜欢第二种形式。

答案3

有效的 ssh URL 应该是这样的ssh://{user}@host.xz/path/to/repo.git,所以你应该没问题(如果(mysite/.git是有效路径)。

问题应该出在本地:您是否对当前目录具有写权限?


一旦获得写权限,您仍然会收到两条消息:

  • stdin: is not a tty:这意味着你的 .bashrc 或全局 .bashrc 中的某些内容正在等待输入:请参阅響球例如:

mesg y全局 .bashrc 文件里面有一行 ( ),与 GIT 交互时会导致重复出现消息 ( stdin: is not a tty)

这并不能阻止克隆。

  • warning: You appear to have cloned an empty repository:该警告与前一条消息无关,并且如果您克隆的 repo 确实是空的,则该警告应该是准确的。

答案4

对我来说,问题是目录的写访问权限,我使用“sudo”修复了它。我必须在我的 bash 配置文件中创建一个别名,在 git 命令之前缩写 sudo 命令。

下面是我添加到 .profile 文件中的行,效果很好。我不再收到“致命错误:无法创建工作树目录...”消息。

alias sgit="sudo /usr/local/git/bin/git"

 

更新

我说得太早了。这样做会导致我的 Mac 上的程序在目录中保存文件时出现其他问题,因为该目录归 root 所有。我不得不将根目录更改为我的用户帐户(也是管理员)。这反过来又使我的别名“sudo git”变得毫无用处,因为我现在可以直接使用 git 而无需 sudo。希望这对某些人有帮助。

相关内容