我有一个项目,我创建了一个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目录已经存在,并且不是空目录。

但我看到小路上空无一人。 这是怎么回事?


当前回答

对于GitHub上的存储库,请尝试:

git clone ssh://git@github.com/<user>/<repository name>.git

通过ssh设置git克隆参见:

生成SSH密钥并在“帐户设置-> SSH密钥”中添加生成的密钥 SSH克隆

其他回答

首先,我的GIT技能有点欠缺。

这将在您的机器上克隆一个裸存储库,其中只包含.git中的文件夹,这是一个隐藏目录。执行ls -al,您应该会在存储库中看到.git或CD .git。

做这个问题很简单 试试这个。

步骤1:

ls -al ~/.ssh

步骤2:

ssh-keygen 

(使用enter键作为默认值) 步骤3:设置配置文件

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: 当你完成第四步的时候 1.test2。Git文件将下载完成 2.您将在~/.ssh中获得新文件(known_hosts)

PS:我创建了id_rsa和id_rsa。并将其交付到Gitlab服务器。在任何客户端(windows和Linux)使用这两个密钥。

您需要在您调用的服务器上运行clone命令。但是我打赌你没有在你的本地客户端上运行ssh服务器,所以不管怎样这都行不通。建议你遵循这个方法(检查手册,因为我是凭记忆这么做的)

登录到服务器机器。 使用git init——bare创建一个裸回购 在客户端机器上,您可以将回购推到服务器。git远程添加source ssh://user@server:/GitRepos/myproject。Git后面跟着Git push origin master

这可能与问题直接无关;但是我犯了一个错误,我在OP中看到,是URL规范ssh://user@server:/GitRepos/myproject。Git -也就是说,它后面有冒号:和正斜杠/,表示绝对路径。

然后我发现Git克隆,ssh:无法解析主机名- Git,开发- 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://作为服务器上的相对路径(相对于服务器机器上用户名的home目录)

我想尝试一个包括git流程和三个“点”或用例的答案,git中央存储库,本地开发和生产机。这一点没有经过很好的测试。

我给出了非常具体的命令。而不是<your folder>,我将写入/root/git.我更改原始命令的唯一地方是用example.com替换我的特定服务器名。我将解释文件夹的用途,以便您可以相应地调整它。请让我知道任何困惑,我会更新答案。

服务器端的git版本为1.7.1。服务器为CentOS 6.3 (Final)。

开发机上的git版本为1.8.1.1。这是Mac OS X 10.8.4。

中央存储库和生产机器在同一台机器上。

SVN用户可以将中央存储库关联为“服务器”,配置如下。我有一个文件夹/root/git,我保存所有的git存储库。我想为一个项目创建一个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流

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克隆命令将与开发机器上使用的命令类似。