Git中的分支如何比常规的提交/推/拉循环对开发人员更有效?

Git中的分支如何比常规的提交/推/拉循环对开发人员更有效?,git,branch,Git,Branch,我已经使用git有一段时间了,我喜欢它,但是,我通常在cvs/svn样式中使用它(除非我没有访问头部的权限,否则我不会使用branch/fork) 我发现提交/拉/推循环是有效的:如果有冲突,我通常只签出源代码的新副本,重新合并更改,然后继续。当然,如果我在源代码树中编辑一个热点,就会出现问题——但我认为这是任何多开发人员源代码管理工作流的问题 所以我的问题是:与cvs风格的集中式提交/拉/推开发周期相比,我如何开始实现git“分支”开发工作流产生的附加值?一般来说,当采用这种主要的git风格的

我已经使用git有一段时间了,我喜欢它,但是,我通常在cvs/svn样式中使用它(除非我没有访问头部的权限,否则我不会使用branch/fork)

我发现提交/拉/推循环是有效的:如果有冲突,我通常只签出源代码的新副本,重新合并更改,然后继续。当然,如果我在源代码树中编辑一个热点,就会出现问题——但我认为这是任何多开发人员源代码管理工作流的问题


所以我的问题是:与cvs风格的集中式提交/拉/推开发周期相比,我如何开始实现git“分支”开发工作流产生的附加值?一般来说,当采用这种主要的git风格的开发实践时,我们会看到生产率的提高吗?

分支实际上非常重要。想象一下,你和你的同事都在开发一个功能。你们两个都需要几天的时间来编写代码。同时,您可能希望编译自己的代码并对其进行测试,而不会让同事在程序中引入错误的代码。分支可以帮助您将自己对源代码的修改分开,直到您决定合并它们为止

另一个例子可能是,您要发布软件,需要对其进行广泛的测试/调试。与此同时,您的同事已经开始编写下一个版本。这里的分支有助于将测试中的旧代码与开发中的代码分开

您可以查看一个有趣的分支使用模式


使用Git,您不必担心合并。如果你曾经试图故意制造冲突,然后解决它,你就会知道这很简单。事实上,除非两个人对代码的同一部分做出了大量贡献,否则解决冲突并不是什么大事。

分支实际上相当重要。想象一下,你和你的同事都在开发一个功能。你们两个都需要几天的时间来编写代码。同时,您可能希望编译自己的代码并对其进行测试,而不会让同事在程序中引入错误的代码。分支可以帮助您将自己对源代码的修改分开,直到您决定合并它们为止

另一个例子可能是,您要发布软件,需要对其进行广泛的测试/调试。与此同时,您的同事已经开始编写下一个版本。这里的分支有助于将测试中的旧代码与开发中的代码分开

您可以查看一个有趣的分支使用模式


使用Git,您不必担心合并。如果你曾经试图故意制造冲突,然后解决它,你就会知道这很简单。事实上,除非两个人对代码的同一部分做出了广泛的贡献,否则解决冲突并不是什么大事。

在单分支模型中,只有两种可能进行重大更改:

  • 大的更改将作为单个提交签入。这太糟糕了,在整个工作完成之前,进行更改的人员将无法使用源代码管理。如果更改需要四个星期,那就是没有源代码控制的四个星期。(想象一下,如果你想在这四周内在两个不同的工作站上工作……)

  • 大的更改会在多次提交时签入。这太可怕了,任何同时检查代码的人都会得到一棵坏树。如果改变需要四个星期,那就是没有人能完成任何事情的四个星期

唯一可行的解决方案是分支和合并


注意:我希望这是你文章中的一个打字错误。正确的循环是提交/拉/推。在合并并测试结果合并之前,不要推送更改。否则,您只会将未经测试的代码提供给其他人,而这只会为您赢得干草叉和火炬。

在单分支模型中,只有两种可能进行重大更改:

  • 大的更改将作为单个提交签入。这太糟糕了,在整个工作完成之前,进行更改的人员将无法使用源代码管理。如果更改需要四个星期,那就是没有源代码控制的四个星期。(想象一下,如果你想在这四周内在两个不同的工作站上工作……)

  • 大的更改会在多次提交时签入。这太可怕了,任何同时检查代码的人都会得到一棵坏树。如果改变需要四个星期,那就是没有人能完成任何事情的四个星期

唯一可行的解决方案是分支和合并

注意:我希望这是你文章中的一个打字错误。正确的循环是提交/拉/推。在合并并测试结果合并之前,不要推送更改。否则,您只是将未经测试的代码提供给其他人,这只会为您赢得干草叉和火炬。

  • 您可以在分支上工作,而无需为多个提交自动推送到中央存储库(并拥有它),从而保留有意义的历史记录
  • 您可以在不实际访问中央存储库的情况下处理项目,并通过公开分支进行反馈
  • 您可以在分支之间进行合并并来回选择,合并历史记录也将被记录下来(我听说
    svn
    现在也可以,但没有使用较新的
    svn
如果新的svn确实记录了合并,那么它应该可以实现大部分功能,但在远程集中存储库上模拟此工作流也很慢。

  • 你可以在你的分支上工作,而不必推到中心位置