GIT在Windows中跨本地文件系统克隆回购

GIT是一个完整的Noob。 过去几天我一直在采取第一步。 我在我的笔记本电脑上安装了一个回购站,从SVN项目中拉下了Trunk(有一些分支问题,没有让他们工作),但在那里似乎都没问题。

我现在想要能够从笔记本电脑拉到我的主桌面。 原因是笔记本电脑在火车上很方便,因为我每天花两个小时旅行,可以完成一些很好的工作。 但是我家里的主机是非常好的开发。 所以我想在回家的时候能够从笔记本电脑推到主电脑。 我认为这样做最简单的方法就是让代码文件夹在整个局域网中共享,并做到:

git clone file://192.168.10.51/code 

不幸的是,这似乎并没有为我工作:

所以我打开一个git bash cmd并键入上面的命令,我在C:\ code(这两个机器的共享文件夹)这是我回来:

 Initialized empty Git repository in C:/code/code/.git/ fatal: 'C:/Program Files (x86)/Git/code' does not appear to be a git repository fatal: The remote end hung up unexpectedly 

我怎样才能以最简单的方式共享两台机器之间的资料库。

还有其他地方是官方的存储点和其他开发者和CI服务器等将从中拉出来的地方,这样做是为了让我可以在两台机器上进行相同的回购。

根据塞巴斯蒂安的build议,我得到以下几点:

 C:\code>git clone --no-hardlinks file://192.168.10.51/code Initialized empty Git repository in C:/code/code/.git/ fatal: 'C:/Program Files (x86)/Git/code' does not appear to be a git repository fatal: The remote end hung up unexpectedly 

**编辑 – 答案**

感谢所有帮助。 我试图映射一个驱动器,所以认为我会回去,没有映射重试。 最终的结果是:

 git clone file://\\\\192.168.0.51\code 

这很好。

谢谢

您可以通过将UNCpath应用于文件协议来指定远程的URL。 这需要您使用四个斜杠:

 git clone file:////<host>/<share>/<path> 

例如,如果你的主机具有IP 192.168.10.51和计算机名称main ,并且它有一个本身是git存储库的共享code ,那么下面的两个命令应该同样工作:

 git clone file:////main/code git clone file:////192.168.10.51/code 

如果Git存储库位于子目录中,只需追加path:

 git clone file:////main/code/project-repository git clone file:////192.168.10.51/code/project-repository 
 $ git clone --no-hardlinks /path/to/repo 

上面的命令在你的git仓库中使用POSIXpath符号作为目录。 对于Windows,它是(目录C:/path/to/repo包含.git目录):

 C:\some\dir\> git clone --local file:///C:/path/to/repo my_project 

存储库将克隆到C:\some\dir\my_project 。 如果你省略file:/// part,则隐含 – --local选项。

主机名的答案不适用于我,但这样做:

git克隆文件:////home/git/repositories/MyProject.git/

也许将共享映射为networking驱动器,然后执行

 git clone Z:\ 

大多只是一个猜测; 我总是用ssh来做这个东西。 之后的提示当然意味着你需要每次从笔记本电脑上拉/拉笔记时都映射这个驱动器。 我不知道你是如何assemblyssh在windows下工作的,但是如果你要这么做的话,这可能是值得研究的。

我使用file://成功地完成了这个工作,但还有一个额外的斜杠来表示绝对path。

 git clone file:///cygdrive/c/path/to/repository/ 

在我的情况下,我在Cygwin for Windows上使用Git,可以看到我的path中有/ cygdrive / c部分。 随着一些调整的path,它应该与任何git安装。

添加遥控器的方式相同

 git remote add remotename file:///cygdrive/c/path/to/repository/ 

不知道是否因为我的git版本(1.7.2)或什么,但上面使用机器名和IP选项列出的方法不适合我。 另外一个/可能不重要的细节是,回购是我从另一台机器初始化并推送到的一个裸回购。

我正在尝试克隆project1上面build议的命令,如:

 $ git clone file:////<IP_ADDRESS>/home/user/git/project1 Cloning into project1... fatal: '//<IP_ADDRESS>/home/user/git/project1' does not appear to be a git repository fatal: The remote end hung up unexpectedly 

 $ git clone file:////<MACHINE_NAME>/home/user/git/project1 Cloning into project1... fatal: '//<MACHINE_NAME>/home/user/git/project1' does not appear to be a git repository fatal: The remote end hung up unexpectedly 

什么为我工作是简单的:

 $ git clone ../git/project1 Cloning into project1... done. 

注意 – 尽pipe克隆的repo是裸露的,但是这确实产生了一个“正常的”克隆,它包含了我所希望的所有实际的代码/图像/资源文件(与git repo的内部结构相对)。

input绝对path或相对path。

例如下面的第一个使用绝对path:

(这是从包含版本库的文件夹和作为子文件夹的备份文件夹中获取的,也请记住,如果备份文件夹中已经包含任何内容,则不会修改该文件夹;如果不存在,将会创build一个新文件夹)

 ~/git$ git clone --no-hardlinks ~/git/git_test1/ ~/git/bkp_repos/ 

以下使用相对path:

 ~/git$ git clone --no-hardlinks git_test1/ bkp_repos2/