2013-05-08 120 views
1

我见过下面git clone语法我可以直接将本地常规存储库作为裸存储库克隆到远程主机上吗?

git clone --bare /path/to/repo /path/to/bare/repo.git 

然而,这似乎并没有当目标是远程主机上工作的使用。我已经尝试过几种格式的目的地,例如加上ssh://[email protected]的前缀 - 但我所有的尝试都产生了本地创建的文件夹。

很明显,我发现其他方法(https://stackoverflow.com/a/1402783/741970),但有没有什么方法可以使用上面的语法?

+0

什么是错误信息? – 2013-05-08 03:39:14

+0

@EdwardFalk没有错误消息,只是克隆回购,但本地。 – 2013-05-08 04:43:44

回答

1

这是不可能的。 Git尚未在其协议中“在远程主机上创建此存储库,然后使用此历史记录填充它”。我已经看到这是在主要的Git列表上讨论的,但结果是不确定的(类似“可行,但没有人需要这个,所以没有人需要执行”)。

我应该补充一点,在你连接的答案中建议的方法非常呃......。奇怪的,特别是首先做本地裸露克隆的想法。

你应该做的却是:

  1. 登录通过SSH远程主机。
  2. 使用git init --bare创建远程目录。确保它具有适当的访问权限等。
  3. 注销。
  4. 推送需要从您的本地存储库。通常这相当于运行

    git push <that_repo> +refs/heads/*:refs/heads/* +refs/tags/*:refs/tags/* 
    

    如果你打算从你的本地库,你可能会首先考虑将其添加为一个名为远程与仓库的进一步交流,像

    git remote add quux ssh://[email protected]/path/to/the/repo.git 
    
1

我不是C的家伙,但在clone.c's cmd_clone function左右,似乎并不如此。各种帮助信息都使用短语,如git clone <repo> [<dir>],这意味着一个简单的目录名称作为目的地,并且目标端的所有操作似乎都是标准文件操作,例如递归readdirmkdir操作,而回购内容则在调用到transport.c,尤其是here,其中调用transport_get,这是所有关于URL(文件/ git/ssh/etc)。

您可以设置指向服务器(或Dropbox folder)的NFS共享,但这可能不是您所追求的。

1

你在里面out ...但你可以远程执行正常的git clone命令:

ssh [email protected] git clone --bare [email protected]:/path/to/repo /remote/path/to/bare/repo 

当然,NA T和权限可能会使这成为不可能取决于您的设置...

但回答你的问题,不,你不能使用你想要做的事情你想做的事情的语法。

相关问题