通过ssh实现git克隆
我在一个项目上创建了git存储库:通过ssh实现git克隆,git,git-clone,Git,Git Clone,我在一个项目上创建了git存储库: $ cd myproject $ git init $ git add . $ git commit 我想在另一台机器上创建一个裸克隆: $ cd .. $ git clone --bare myproject ssh://user@server:/GitRepos/myproject.git 我执行了克隆,但没有打印任何答案。 我登录到服务器机器并尝试查看文件的存储方式。路径/GitRepos为空,因此我决定再次进行克隆: $
$ 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@服务器:/GitRepos/myproject.git'已存在,并且不是空目录
但我看到这条路是空的。这是怎么回事?首先,我有点缺乏GIT技能 这将在您的计算机上克隆一个裸存储库,它只包含
.git
中的文件夹,这是一个隐藏目录。执行ls-al
,您应该会看到存储库中的.git
或cd.git
cd /home/kinjal/Sites
git clone root@example.net:/root/git/flowers.git
git add .
git commit -am 'initial'
git push
您是否可以添加对您的意图的描述,以便具有更多GIT技能的人能够提供帮助?您真正想做的是什么而不是计划如何做?您需要在您调用的服务器上运行clone命令。但我敢打赌,您没有在本地客户端上运行ssh服务器,因此无论如何都无法运行。建议您遵循此方法(查看手册,因为我是凭记忆完成此操作的)
git推送原始主机
这可能与问题没有直接关系;但是我刚才犯的一个错误,我在OP中看到,是URL规范
ssh://user@server:/GitRepos/myproject.git
——也就是说,在表示绝对路径的后面有一个冒号:
,还有一个正斜杠/
然后我发现(因为这是我在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://
(相对于服务器计算机上用户名的主目录)
希望这对某人有所帮助,
干杯!我想尝试一个包括git流和三个“点”或用例、git中央存储库、本地开发和生产机器的答案。这没有经过很好的测试
我给出了非常具体的命令。我不会说
,而是说/root/git
。我更改原始命令的唯一地方是将我的特定服务器名称替换为example.com
。我将解释文件夹的用途,以便您可以相应地进行调整。如果有任何混淆,请告诉我我会更新答案
服务器上的git版本为1.7.1。服务器为CentOS 6.3(最终版)
开发机器上的git版本是1.8.1.1。这是MacOSX10.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 add .
git commit -am 'initial'
git push
这让我可以开始向它添加东西
git flow init -d
默认情况下,这是在branchdevelop
上。我现在在这里添加代码。然后我需要提交到中央git存储库
cd /home/kinjal/Sites
git clone root@example.net:/root/git/flowers.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
请注意,我在发布开始和发布完成之间没有做任何事情。当我完成发布完成时,系统会提示我编辑两个文件。这将开发分支推到master
在与我的git中央存储库位于同一台机器上的生产站点上,我希望将存储库放入/var/www/vhosts/example.net
。我已经有了/var/www/vhosts
cd /var/www/vhosts
git clone file:///root/git/flowers.git example.net
如果生产机器也在另一台机器上,那么git clone命令将与开发机器上使用的命令类似。git 101:
git
是一个分散的版本控制系统。你不需要一台服务器来启动和运行git。不过,你可能希望这样做,因为它看起来很酷,对吧?(如果你想从多台计算机上处理单个项目,它也很有用。)
因此,要让“服务器”运行,您需要运行git init--bare.git
,因为这将创建一个空的存储库,然后您可以将其导入到您的机器上,而不必在.git
目录中的配置文件中乱动
在此之后,您可以按照预期的方式在客户端上克隆repo,但我发现一些客户端(即git gui
)将无法克隆完全为空的repo。要解决此问题,您需要运行cd.git&&touch&&git add&&git commit&&git push origin master
。(请注意,如果您过去没有为该计算机的git配置用户名和电子邮件,则可能需要这样做。要运行的实际命令将出现在您收到的错误消息中,因此我将省略它们。)
因此,此时您可以简单地将存储库克隆到任何机器上
vim /c/Users/Willie/.ssh/config
git clone git@gitlab.com:<username>/test2.git