问题是如何定义指向Bob仓库的远程名称bob。如果开发人员使用不同的操作系统是否会影响这一点。每个开发者都会推送和拉取到远端主机(origin)。但是除了中心化的 推拉关系,每个开发人员还可以从其他同事那里拉取更改,以形成子团队……技术上,这意味着Alice已经定义了一个Git远程(remote),命名为bob,指向Bob的仓库,反之亦然。
问题是如何定义指向Bob仓库的远程名称bob。如果开发人员使用不同的操作系统是否会影响这一点。每个开发者都会推送和拉取到远端主机(origin)。但是除了中心化的 推拉关系,每个开发人员还可以从其他同事那里拉取更改,以形成子团队……技术上,这意味着Alice已经定义了一个Git远程(remote),命名为bob,指向Bob的仓库,反之亦然。
如果您在主机上建立用户帐户并在仓库上具有访问权限,其他人可以使用SSH推送/提取操作,无论是否建立了命名的“远程”。
git push user@host:/path/to/repo branch
git remote add remotename user@host:/path/to/repo
git daemon
:git equivalent of 'hg serve'?。在这种情况下,以上共享命令仍然适用,但是user@host:path
将被替换为git://host/
。另请参阅git daemon documentation。这是一个非常常见的场景,比如说Alice和Bob需要共同开发某个功能。同时,不同的开发人员应该在不同的分支上进行开发。
简单的方法是:
Push and pull operations should be performed using
git pull origin sprint_1 and git push origin sprint_1
当修改完成且sprint_1有稳定的代码后,可以将其与其他分支合并。如果sprint_1上的代码已经发生了很大的变化,建议使用rebase分支而非合并以避免冲突或挑选。
$ git clone --no-hardlinks /path/to/repo
The above command uses POSIX path notation for the directory with your git repository. For Windows it is (directory C:/path/to/repo contains .git directory):
C:\some\dir\> git clone --local file:///C:/path/to/repo my_project
The repository will be clone to C:\some\dir\my_project. If you omit file:/// part then --local option is implied.
git daemon
解决此问题的方法。 我将在此处放入内容的简要副本:
http://railsware.com/blog/2013/09/19/taming-the-git-daemon-to-quickly-share-git-repository/
为读取访问(serve)或读/写访问(hub)设置以下别名以访问您的存储库:$ git config --global alias.serve "!git daemon --base-path=. --export-all --reuseaddr --informative-errors --verbose"
$ git config --global alias.hub "!git daemon --base-path=. --export-all --enable=receive-pack --reuseaddr --informative-errors --verbose"
git serve
或git hub
即可。现在在客户端上可以执行git clone git://x.x.x.x/path/to/repo
来访问主机上的本地存储库!git daemon
命令将服务于提取操作,否则您可以设置专用端口上的ssh访问以获得同样的效果,但需要更多的工作。git daemon
,这会更有帮助。我感觉这个命令才是真正回答这个问题的答案,但目前发布的任何答案都没有对其进行解释。 - Wildcard如果您在自己的计算机和想要共享的计算机之间有自由,那么获得真正的分布式工作流程并不是很困难。基本上,您需要让每台机器作为SSH git服务器来提供repo服务。
这里有几个答案指出,你可以在机器之间简单地添加用户,并使用用户密码来建立SSH连接。Git书的第4.1章和4.4章还详细介绍了创建一个单一用户,该用户授予远程请求访问~/.ssh/authorized_keys
文件中SSH密钥列表的权限。这似乎是管理授予同事访问权限的不错方法,但仍需要在授权账户的authorized_keys文件中管理用户密钥。需要考虑的一点是,这是“你”的开发框,而不是一个适当的“服务器”。
我从未使用过git daemon
,所以无法确切地说它是否更好,但如果您愿意使用git
协议,并且对在网络中的每台机器上运行它有很好的理解,则似乎是一个可行的选择,应该从网络中的安全位置为存储库提供服务。在这里还可能有帮助的是,文档在提到防火墙设置时提到了以下内容:
如果您正在运行防火墙,则还需要在您设置此项的计算机上的9418端口打开一个洞。