我想使用SSH访问远程git存储库,但我得到一个致命错误 – 是否有我的语法问题?
我在我的服务器上的mysite文件夹中创build了一个git repo – 所以repo在/home/mysite/.git
git clone ssh://root@serverIP/mysite/.git fatal: could not create work tree dir 'mysite'.: Permission denied
任何人都可以看到我的语法有什么问题,或者在这里有另一个问题?
尝试使用目标目录的完整path。 为了试验:
git clone ssh://root@serverIP/mysite/.git /home/user_name/mysite
UPD:
当git克隆回购时,它会根据回购的名称为其创build目录。
git clone [email protected]:username/repo.git
Git将创build目录repo 。 但是你的情况mysite/.git没有回购的名字。
你必须给ssh整个path到你的回购和.git部分是不必要的,git可以自己找出一个:
git clone ssh://root@serverIP/home/mysite
编辑:当使用URLtypesssh://语法时,我以前使用的冒号无效。 还有另一种语法(ssh样式),它需要它:
git clone root@serverIP:/home/mysite
我通常更喜欢第二种forms。
一个有效的ssh URL应该像ssh://{user}@host.xz/path/to/repo.git ,所以你应该可以(如果( mysite/.git是一个有效的path))。
这个问题应该在本地:你有写权限到你的当前目录吗?
一旦你有写权限,你仍然有两个消息:
stdin: is not a tty :这意味着你的.bashrc或者全局的.bashrc文件正在等待一个input:参见ee例如: 在全局bashrc文件中有一行(
mesg y),当与GIT交互时会导致重复的消息(stdin: is not a tty)
这不会阻止克隆。
warning: You appear to have cloned an empty repository :该警告独立于以前的消息,并且如果您正在克隆的回购确实是空的,应该是准确的。 对我来说问题是写访问目录,我使用“sudo”来修复它。 我必须在我的bashconfiguration文件中创build一个别名,这个别名在git命令之前占用了sudo命令。
下面是我添加到我的.profile文件的行,它很好。 我不再有“致命的:不能创造工作树目录”的消息了。
alias sgit="sudo /usr/local/git/bin/git"
UPDATE
我说得太快了。 这样做导致与我的Mac上的程序的其他问题,以保存在目录中的文件,因为该目录属于根。 我不得不改变根目录到我的用户帐户(这也是pipe理员)。 这反过来使我的别名“sudo git”没用,因为我现在可以使用没有sudo的git。 希望这有助于某人。