我有一个项目,我在其上创建了一个git存储库:
$ cd myproject
$ git init
$ git add .
$ git commit
我想在另一台机器上创建一个裸克隆:
$ cd ..
$ git clone --bare myproject ssh://user@server:/GitRepos/myproject.git
我执行了克隆但没有打印任何答案。 我登录到服务器计算机并尝试查看文件的存储方式。路径/ GitRepos是空的,所以我决定再次进行克隆:
$ git clone --bare myproject ssh://user@server:/GitRepos/myproject.git
这次答案是:
但是我看到路径是空的 这是怎么回事?致命:目标路径'ssh:// user @ server:/GitRepos/myproject.git'已经存在且不是空目录。
答案 0 :(得分:192)
这可能与问题无直接关系;但是我自己做的一个错误,我在OP中看到的是URL规范ssh://user@server:/GitRepos/myproject.git
- 也就是说,你有一个冒号:
和一个正斜杠/
一条绝对的道路。
然后我找到Git clone, ssh: Could not resolve hostname – git , development – Nicolas Kuttler(因为这是我在git
版本1.7.9.5上得到的错误),注意到:
我最初使用的命令的问题是我尝试使用类似scp的语法。
......这也是我的问题!所以基本上在git
和ssh
中,您可以使用
ssh://username@host.xz/absolute/path/to/repo.git/
- 只是服务器上绝对路径的正斜杠username@host.xz:relative/path/to/repo.git/
- 只是冒号(服务器上的相对路径不得为ssh://
(相对于服务器计算机上username
的主目录)希望这有助于某人,
干杯!
答案 1 :(得分:110)
对于GitHub上的存储库,请尝试:
git clone ssh://git@github.com/<user>/<repository name>.git
要设置git以通过ssh克隆,请参阅:
Generating SSH Keys并在帐户设置 - &gt;中添加您生成的密钥SSH密钥
答案 2 :(得分:42)
您需要在要调用服务器的内容上运行clone命令。但我敢打赌你没有在你的本地客户端上运行ssh服务器,所以无论如何都无法运行。建议你遵循这种方法(检查手册'因为我是从记忆中做到这一点)
git init --bare
git remote add origin ssh://user@server:/GitRepos/myproject.git
后跟git push origin master
答案 3 :(得分:4)
Git 101:
git
是一个分散版本控制系统。您无需使用服务器即可启动并运行git。你可能仍然希望这样做,因为它看起来很酷,对吗? (如果您想从多台计算机处理单个项目,这也很有用。)
因此要运行“服务器”,您需要运行git init --bare <your_project>.git
,因为这将创建一个空的存储库,然后您可以在计算机上导入该存储库,而不必在{{1}中的配置文件中进行处理} dir。
在此之后,您可以克隆客户端上的repo,因为它应该可以工作,但我发现一些客户端(即.git
)将无法克隆完全为空的repo。要解决此问题,您需要运行git-gui
。 (请注意,如果您以前没有这样做,可能需要为该计算机的git配置用户名和电子邮件。运行的实际命令将出现在您收到的错误消息中,因此我将省略它们。)< / p>
因此,此时您只需运行cd <your_project>.git && touch <some_random_file> && git add <some_random_file> && git commit && git push origin master
即可将存储库克隆到任何计算机。 (正如其他人指出的那样,如果使用绝对路径,则可能需要在前缀git clone <user>@<server>:<relative_path><your_project>.git
。)这假设您已经可以从客户端登录到服务器。 (如果您打算将大量内容推送到远程服务器,您还可以获得设置ssh://
配置文件和密钥的奖励积分。)
一些相关链接:
This pretty much tells you what you need to know.
And this is for those who know the basic workings of git but sometimes forget the exact syntax.
答案 4 :(得分:2)
Upfront,我有点缺乏我的GIT技能。
这将在您的计算机上克隆一个裸存储库,该存储库仅包含.git
中隐藏目录中的文件夹。执行ls -al
,您应该在存储库中看到.git
或cd .git
。
您是否可以添加对意图的描述,以便具有更多GIT技能的人可以提供帮助?你真的想要做的是什么,而不是你打算怎么做?
答案 5 :(得分:2)
我想尝试一个包含git-flow和三个'点'或用例,git中央存储库,本地开发和生产机器的答案。 未经过充分测试。
我正在给出令人难以置信的特定命令。我会说<your folder>
而不是说/root/git
。我更改原始命令的唯一地方是用example.com
替换我的特定服务器名称。我将解释文件夹的用途,以便您可以相应地进行调整。请让我知道任何困惑,我会更新答案。
服务器上的git版本是1.7.1。服务器是CentOS 6.3(最终版)。
开发机器上的git版本是1.8.1.1。这是Mac OS X 10.8.4。
中央存储库和生产机器在同一台机器上。
中央存储库,svn用户可以与“服务器”相关联,配置如下。我有一个文件夹/root/git
,我保留了所有的git存储库。我想为我称之为'flowers'的项目创建一个git存储库。
cd /root/git
git clone --bare flowers flowers.git
git命令给出了两条消息:
Initialized empty Git repository in /root/git/flowers.git/
warning: You appear to have cloned an empty repository.
无需担心。
在开发机器上配置如下。我有一个文件夹/home/kinjal/Sites
,我放置了所有项目。我现在想要获得中央git存储库。
cd /home/kinjal/Sites
git clone root@example.net:/root/git/flowers.git
这让我可以开始添加内容。我首先设置了git flow
git flow init -d
默认情况下,这是在分支develop
上。我现在在这里添加我的代码。然后我需要提交到中央git存储库。
git add .
git commit -am 'initial'
git push
此时它推向了开发分支。我想将它添加到主分支。
git flow release start v0.0.0 develop
git flow release finish v0.0.0
git push
请注意,我在发布开始和发布完成之间没有做任何事情。当我完成发布时,我被提示编辑两个文件。这推动了开发部门的掌握。
在与我的中央git存储库位于同一台计算机上的生产站点上,我想将存储库放在/var/www/vhosts/example.net
中。我已经/var/www/vhosts
。
cd /var/www/vhosts
git clone file:///root/git/flowers.git example.net
如果生产机器也在不同的机器上,git clone
命令看起来就像在开发机器上使用的那样。
答案 6 :(得分:1)
免责声明:这只是bobbaluba发表的评论的副本,对于以后的访问者来说更加明显。它对我的帮助比其他任何答案都重要。
以ssh://
为例,您必须删除git clone
前缀
git clone git@github.com:owner/repo.git
答案 7 :(得分:0)
我做到了: git clone --bare“ / GITREPOSITORIES / RepoA”“ ssh:// luc @ EERSTENASDS119J / volume1 / RepoA” 结果: 致命:目标路径'ssh:// luc @ EERSTENASDS119J / volume1 / RepoA'已经存在,并且不是空目录。
系统在我的当前路径中创建了目录ssh:// luc @ EERSTENASDS119J / volume1 / RepoA。
因此git clone没有解释URL规范。 使用了Alec的解决方法。
答案 8 :(得分:0)
尝试一下。
第1步:
ls -al ~/.ssh
第2步:
ssh-keygen
vim /c/Users/Willie/.ssh/config
主持人gitlab.com
主机名gitlab.com
用户git
IdentityFile〜/ .ssh / id_rsa
第4步:
git clone git@gitlab.com:<username>/test2.git
第5步:
完成第4步后
1. test2.git文件将被下载完成
2.您将在〜/ .ssh中获得新文件(known_hosts)
PS:我自己创建了id_rsa和id_rsa.ub,并将其交付给Gitlab服务器。使用任何客户端(Windows和Linux)的两个键。
答案 9 :(得分:-1)
git clone git @ server:Example / proyect.git