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