Git工作流程:没有服务器

时间:2011-05-10 08:10:28

标签: git git-workflow

git应该是一个分散的系统,但所有的教程和 我在谷歌上发现的最佳实践工作流建议使用服务器 (通常是github,或者自己设置)

我正在使用git进行小型个人项目(2-3人),我在哪里可以找到 用于在团队成员计算机之间直接同步更改的最佳实践工作流程。 或者,有什么令人信服的论据可以解释为什么我应该避免这种情况,而是设置一个“中心”。服务器

谢谢,

7 个答案:

答案 0 :(得分:40)

取决于“服务器”的含义。 Git将在没有中央服务器的情况下愉快地工作,尽管许多团队发现拥有中央存储库很方便。

如果由“服务器”,你的意思是“安装服务器软件”,Git会工作(中央储存库或没有)没有任何特殊的软件,通过SSH或文件系统上。

See this document for possible workflows

具有公共存储库的工作流程

在工作流程,很多使用的是所有开发商的“推”(发送)其变为通用存储库,并得到所有从库中的变化。像这样:

  • 开发者A推送到中央
  • 开发者B推送到中央
  • 开发者C拉(从A和B获得更改)
  • 开发者A拉(从B获取更改)
  • ...

在这种情况下,中央存储库可以位于开发人员计算机之一,github或任何其他位置

电子邮件工作流程

你也可以在没有任何服务器的情况下使用git,只需使用电子邮件。在这种情况下,流程将是这样的:

  • 开发人员A将更改作为电子邮件发送给团队
  • 其他开发者应用电子邮件中的更改

这甚至可以半自动方式完成

没有中央服务器的工作流程

您可以设置git以使用多个“远程”存储库。需要提醒的是,你应该绝不会推到已签出存储库(即开发者复制上有人工作)。所以在这种情况下,流程将是这样的:

  • 开发者A进行更改
  • 开发者B进行更改
  • 开发者C从A
  • 中提取更改
  • 开发者C从B
  • 中获取更改
  • 开发者B从A
  • 中提取更改
  • ...
  • 没有人必须推
恕我直言,这种类型的工作流程很快就会导致混乱和崩溃。

答案 1 :(得分:18)

首先需要做的是思考你已经使用的工作流程,并配置git来使用它。一旦你有了一些东西,你可以微调它。无需将单独的计算机设置为服务器。如果您习惯于拥有一个中央存储库,那么您需要做的就是创建一个每个人都推送的裸存储库。为什么不在本地网络上?

中央回购:

mkdir foo.git
cd foo.git
git init --bare

您的回购:

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

其他回购:

git clone //path/to/central/repo/foo.git

现在任何人都可以直接从主分支推送和拉取。这应该足以让你入门。

答案 2 :(得分:10)

您不一定需要在某个地方的物理服务器上放一份副本,但在某个地方建立一个“有福”的存储库可能会有所帮助 - 让您的一个团队(可能在轮换中)负责收集和管理人员当他们准备被视为最终的时候会发生变化。他们可以在自己的常用存储库中保留一个分支,也可以在本地系统上维护一个单独的存储库来存储主源。

作为一个具体的例子,考虑Linux和Linus Torvalds - 没有中央存储库,每个人都推动,但Linus维护着一个存储库,其中包含他认为“准备好”的所有代码(其他几个人也是如此) “准备好”的定义。这样,您就可以获得代码所在的规范定义,以及定义发布内容的地方。

答案 3 :(得分:7)

您应该将中央服务器设置为社交构造,而不是技术构造,以便每个人都知道在哪里可以找到最新的官方版本,而不会产生混淆。

答案 4 :(得分:6)

如前所述,Git在没有集中式服务器的情况下工作得非常好。但是,拥有一个中央服务器的一个很好的理由是,一旦完成一项功能,其他开发人员无需访问您的本地计算机即可拥有一个“永远在线”的位置来推送代码。

例如,目前我在一个3人开发团队工作。我们都在笔记本电脑上工作。我们可以有一个工作流程,我们只是从彼此的机器中拉出来。但是,如果我在一个功能上工作并在每个人离开办公室之后承诺我的机会,并且我希望他们看看这个系统,除非我的笔记本电脑在网络上可用,否则它们无法做任何事情。如果这些人比我更早出现(他们总是这样做),他们必须等到我的笔记本电脑重新上线。

如果我推送到像BitBucket或GitHub这样的东西,或者只是办公室里的服务器,那么任何其他开发人员都可以简单地完成我们下次在线时所做的更改。

对我而言,这是拥有中央服务器的主要原因,而且这不是Git的错,而是使用笔记本电脑的结果。

答案 5 :(得分:3)

Git在这种设置下工作得很好,尽管你要避免将更改推送到其他人的签出分支(https://git.wiki.kernel.org/index.php/GitFaq#Why_won.27t_I_see_changes_in_the_remote_repo_after_.22git_push.22.3F)。您可能有一个集成分支,您可以将代码推送到,并合并其他人的更改。

我认为中央回购被大量使用的主要原因是它可以作为所有代码的规范基础,而当你拥有它时,你可能会更难理解你应该合并的内容。正在进行3个或更多的发展分支。

答案 6 :(得分:3)

查看Git for beginners: The definitive practical guide

部分“如何设置共享团队存储库?”