git应该是一个分散的系统,但我在谷歌上发现的所有教程和最佳实践工作流建议使用服务器(通常是github,或者自己设置)
我正在使用git进行小型个人项目(2-3人),在哪里可以找到最佳实践工作流程,以便在团队成员机器之间直接同步更改.另外,为什么我应该避免这种情况并建立一个"中央"服务器,有什么令人信服的论据呢?
谢谢,
本
ave*_*ell 41
取决于你所说的"服务器".Git将在没有中央服务器的情况下愉快地工作,尽管许多团队发现拥有中央存储库很方便.
如果通过"服务器",你的意思是"安装服务器软件",git也可以工作(中央存储库与否)没有任何特殊软件,通过ssh或文件系统.
许多开发人员使用的工作流程是所有开发人员将其更改"推送"(发送)到公共存储库,并从该存储库获取所有更改.像这样的东西:
在这种情况下,中央存储库可以位于开发人员计算机之一,github或任何其他位置
您也可以使用git而不使用任何服务器,只需使用电子邮件.在这种情况下,流程将如下所示:
这甚至可以以半自动方式完成
您可以设置git以使用多个"远程"存储库.需要注意的是,您永远不应该推送到已签出的存储库(即,某人正在使用的开发人员副本).所以在这种情况下,流程将是这样的:
恕我直言,这种类型的工作流程将很快导致混乱和崩溃.
ral*_*nja 23
您首先需要做的是思考您已经使用的工作流程并配置git来使用它.一旦你有了一些东西,你可以微调它.无需将单独的计算机设置为服务器.如果您习惯于拥有一个中央存储库,那么您需要做的就是创建一个每个人都推送的裸存储库.为什么不在本地网络上?
中央回购:
mkdir foo.git
cd foo.git
git init --bare
Run Code Online (Sandbox Code Playgroud)
你的回购:
mkdir foo
cd foo
git init
// add files
git add .
git commit -m "Initial commit"
git remote add origin //path/to/central/repo/foo.git
git push origin master
Run Code Online (Sandbox Code Playgroud)
其他回购:
git clone //path/to/central/repo/foo.git
Run Code Online (Sandbox Code Playgroud)
现在任何人都可以直接从主分支推送和拉取.这应该足以让你入门.
And*_*ett 10
你不一定需要在某个地方的物理服务器上放一份副本,但它可能有助于在某个地方建立一个"祝福"的存储库 - 让你的一个团队(可能在轮换中)负责收集和管理人们的变化.准备好被视为最终的.他们可以在其通常的存储库中保留一个分支,也可以在其本地系统上维护一个单独的存储库来存储主源.
作为一个具体的例子,考虑Linux和Linus Torvalds - 没有中央存储库,每个人都推动,但Linus维护一个存储库,其中包含他认为"准备好"的所有代码(以及其他几个人,对于不同的定义'准备').通过这种方式,您可以获得代码所在的规范定义,以及定义发布内容的位置.
如前所述,Git在没有集中式服务器的情况下工作得很好.但是,拥有一个中央服务器的一个很好的理由是,一旦完成一项功能,其他开发人员无需访问本地计算机即可获得一个"永远在线"的位置来推送代码.
例如,目前我在一个3人开发团队工作.我们都在笔记本电脑上工作.我们可以有一个工作流程,我们只是从彼此的机器中拉出来.但是,如果我在一个功能上工作并在每个人离开办公室之后承诺我的机会,并且我希望他们看看这个系统,除非我的笔记本电脑在网络上可用,否则他们无法做任何事情.如果这些人早于我(他们总是这样做),他们必须等到我的笔记本电脑重新上线.
如果我推送到像BitBucket或GitHub这样的东西,或只是办公室里的服务器,那么任何其他开发人员都可以简单地将他们下次在线时所做的更改拉出来.
这对我来说是拥有一台中央服务器的主要原因,而且它确实不是Git的错,而是使用笔记本电脑的结果.