团队成员之间的Git推/拉本地存储库
假设有一个团队有4名开发人员。 我们的项目也有一个中央存储库。 开发人员从中央存储库推拉。(在分散但集中的部分)它说可以在团队成员之间推/拉本地存储库 每个开发人员都会拉和推到原点。但是除了中央集权 推拉关系,每个开发人员也可以从 其他同龄人组成小组…从技术上来说,这意味着什么都没有 Alice定义了一个Git remote,名为bob,指向bob的 存储库,反之亦然 现在的问题是如何定义指向bob存储库的远程名称bob。团队成员之间的Git推/拉本地存储库,git,git-push,git-pull,Git,Git Push,Git Pull,假设有一个团队有4名开发人员。 我们的项目也有一个中央存储库。 开发人员从中央存储库推拉。(在分散但集中的部分)它说可以在团队成员之间推/拉本地存储库 每个开发人员都会拉和推到原点。但是除了中央集权 推拉关系,每个开发人员也可以从 其他同龄人组成小组…从技术上来说,这意味着什么都没有 Alice定义了一个Git remote,名为bob,指向bob的 存储库,反之亦然 现在的问题是如何定义指向bob存储库的远程名称bob。 如果有关系,开发人员可能会使用不同的操作系统。爱丽丝和鲍勃需要一起开发一
如果有关系,开发人员可能会使用不同的操作系统。爱丽丝和鲍勃需要一起开发一些功能,这是很常见的事情。同时,开发应该由不同的开发人员在不同的分支上进行 简单的办法是:
- 创建一个新的分支sprint_1,Alice和bob签出到sprint_1
- 所有与功能相关的更改都应在此处完成
- 推拉操作应使用
git pull origin sprint_1 and git push origin sprint_1
如果两个repo共享一个文件系统名称空间,您可以直接使用文件系统路径。否则,开发人员可以很容易地在本地git服务器上运行,例如,在VPN上,访问已经是可行的私有,
git daemon
命令将很好地用于抓取,否则,您可以在专用端口上设置ssh访问,以实现同样的效果,只需稍微多做一些工作。我想做类似的事情,在我的例子中,我正在寻找一种在嵌入式系统(运行Linux)上同步项目的简单方法。以前我只是建立了一个共享的internet连接,并从集中存储库中提取。但我觉得这样工作并不容易,有时我的网络连接很差
在下面的文章中,我们很好地解释了如何使用git守护进程来解决这个问题。我只在这里放一份内容的简要副本:
为存储库的读访问(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"
然后在主机上,只需从要共享的存储库所在的目录执行gitserve
或github
。现在在客户机上可以执行git克隆git://x.x.x.x/path/to/repo
访问主机上的本地存储库
对于windows用户:
- 在命令中使用双引号设置别名
- 通过右键单击标题栏并选择编辑->标记,确保“挂起”命令提示,使其不输出任何行。否则,到客户端的连接可能会由于git中的错误而中断(根据博客文章中的评论)
git remote add remotename user@host:/path/to/repo
如果共享涉及到密切的协调(并且可能是非常松散的安全性),您可以根据需要在“master”上启动一个短期的git守护程序:在这种情况下,上述共享命令仍然适用,但是user@host:/path
将替换为git://host/
。另见
或者,您可以设置一个单独的专用存储库用于中间共享:我从来没有尝试过这种方法,因为它看起来有点复杂,但可以通过在每台本地计算机上设置远程git访问来实现,没有问题。(创建git用户、添加授权密钥、创建分叉回购等等)在我看来,这篇文章中的所有内容都是一个标准的工作流程。我看不出团队成员从其他同事那里得到改变有什么好处。你可以在每个人的桌面上安装git服务器,但这是一个巨大的难题,因为没有真正的改进。也许你应该给作者发推特?我会跟进这件事。这不是我想要的。我知道他们可以通过推拉远程存储库来处理任何分支。这并不是对这个问题的直接回答,但我对它投了更高的票,因为它实际上更易于理解和设置。因此,如果您不能将注意力集中在其他工作流上(或者您无法说服您的经理使用它,或者您的it部门使跨开发人员难以使用网络设置),您可以使用此设置。不会扩展到数千个开发人员,但还不错。这非常接近。macosx或linux用户在团队中的情况如何?@nyzm我知道我的评论对游戏来说有点晚了,但windows是个怪人,mac和linux是一样的。但是,如果您使用git bash在Windows上与git交互(我相信bash终端是用git打包的,但我已经有一段时间没有使用git one Windows了,所以我可能会记错),那么无论您使用的是哪个操作系统,功能都是一样的。这对于解释git守护进程
会更有帮助。我有一种感觉,command是这个问题的真正答案,但在目前发布的任何答案中都没有解释。这实际上比其他建议简单得多。
$ 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 push user@host:/path/to/repo branch
git remote add remotename user@host:/path/to/repo