如何从另一台计算机的git存储库中获取文件

时间:2016-11-20 19:41:20

标签: git

我对git和笔记本电脑都很陌生(运行Windows,让我们称之为笔记本电脑A)我在this guide之后的项目文件夹中设置了一个git存储库。现在在我的笔记本电脑B上我也想访问该存储库,以便我可以检出文件,使用它们然后将它们上传回存储库。我的理解是我有一个笔记本电脑A的本地存储库,所以我需要做什么才能访问它(如果可能的话)?我发现了一些类似问题的帖子,但我相信他们正在解决linux机器上的问题 - 我将在某些时候做这件事。 笔记本电脑A和B在同一个网络上,但是相关吗?有时他们可能在不同的网络上。 我还在调查git,所以,对不起,如果我说完全不相干的话

2 个答案:

答案 0 :(得分:5)

除了Jeremy Fortune的优秀答案之外,我想补充一点,Git还有一个在同一网络上的机器之间共享存储库的额外机制,那就是git daemon命令。

您可以阅读合理的教程here来帮助您前进。如果您决定采用这种方式,网站上有更多的示例和本网站上的问题可以帮助您进行设置。请注意,它是not meant for hosting your repositories作为服务器,但最常用于快速共享存储库,但这不是你的问题,所以应该没问题。

编辑1:Git服务器建议

如果有人正在查看此问题并且有兴趣托管他们自己的Git服务器,那么我建议查找GitLab

编辑2:通过SSH Git

我还要添加Git understands a few protocols,但我个人最喜欢的是SSH。如果您在远程计算机上运行SSH daemon,则可以直接通过SSH进行提取,而无需设置任何其他内容(还有SSH daemons for Windows )。

git fetch <username>@<hostname>:<path-to-repository> 'refs/heads/:refs/remotes/<repo-B>'

使用适当的值替换<username><hostname><path-to-repository><repo-B>,它应该有效。因此,如果我们使用您的示例中的术语,那么它将是:

git fetch antobbo@laptop-B:/repos/repo-B 'refs/heads/:refs/remotes/repo-B'

请注意你may need to prefix it with ssh://,但根据个人经验,Git无论如何都会想出来。

现在,您可以将该存储库的网络位置保存为远程,从而简化命令,例如Jeremy Fortune在其答案中提到的。

git remote add repo-b antobbo@laptop-B:/repos/repo-B
git fetch repo-b  # note that you don't need a refspec now

有关遥控器的更多信息:Atlassian has an excelent tutorial on thisGitHub也是如此,Git itself也是如此。这3个几乎是Git教程的转到的地方。

使用git fetch这样会提示您输入密码,除非您set up the authorized_keys file

如果要从(需要SSH守护程序的那个)fetch机器是一台Linux机器,但是我没有尝试使用它,这很容易设置Windows或Mac OS X机器,所以我不能说它有多容易或多难。我在Linux和Linux上都使用了Git daemon。 Windows (但不在Mac上)并且知道这很容易,所以我建议如果不确定的话就使用它。

我在谷歌上发现的大部分信息似乎都是为了建立一个成熟的Git服务器而我只是设法this example建议我使用与上面相同的用例。

答案 1 :(得分:4)

Git通过remote子命令与同一存储库的其他副本进行通信。设置遥控器时,为完整路径提供假名(最常见的是“原点”)。

git remote add <pseudonym> <actual-path>

您可以让远程通过各种协议进行通信,包括简单的文件路径。例如:

git remote add laptop-a //laptop-b/path/to/repository

使用此方法时,将笔记本电脑B与笔记本电脑A上的更改同步需要您在笔记本电脑B上发出此命令:

git pull laptop-a <branch-name>

但是如果该路径并不总是可用,那么最好在网络上安装一些其他的存储库副本,这样两者都可以随时查看并在必要时与其同步。因此,我们不是在笔记本电脑B上直接链接到laptop-a,而是可以在网络上的某处创建另一个副本,然后在B上创建链接。

git remote add origin http://domain.com/path/to/repository

在A上,使用相同的命令。

然后,如果要在对A进行更改后在笔记本电脑A和笔记本电脑B之间进行同步,请在A:

上发出此消息
git push origin <branch-name>

在B:

git pull origin <branch-name>

请注意,如果笔记本电脑A和笔记本电脑B上的原始存储库中的tracking分支相同,则上述命令可分别简化为git pushgit pull