什么时候在git中分支?

LDK*_*LDK 13 git

我刚刚开始使用Git,虽然它是比较容易找出如何做混帐我有麻烦搞清楚什么时候做什么混帐.

例如,什么时候通常分支项目?

我正在考虑分支当前项目的每个版本,以及什么时候将它与主人完全合并 - 这是常见的做法吗?

Ala*_*avi 24

我确信有些人做的事与我做的不同.但是,这就是我所遵循的:

  • 始终为每个功能创建一个分支(稍后将它们合并)
  • 为每个错误修复创建一个分支
  • 通过不使其成为正在进行的工作(WIP)来使主分支清洁

  • "通过不使其成为一个正在进行的工作(WIP)让主分支变得清洁"我喜欢这个想法. (3认同)

Sol*_*ogi 8

我不确定你分支每个版本的当前项目是什么意思.

无论如何,你创建'主题分支'的git建议.通过"主题分支",这意味着您在处理功能/错误时创建分支.假设我正在研究jQueryUI,并且我被要求向jQuery Calendar添加一个功能,允许用户指定不可选择的日期.

如果我在分支命名为master中,我将创建一个名为"SpecifyDateExclusion"分支的本地分支并开始进行更改.与此功能相关的任何和所有代码都将进入此分支.

master
  |
  |
  |___ SpecifyDateExclusion
Run Code Online (Sandbox Code Playgroud)

当我正在研究这个功能时,一个错误报告就是Opera 10中的日历已经破解,现在需要修复这个bug.我回到我的主分支并创建另一个名为Opera10BugFix的分支并开始修复它中的bug.

master
  |
  |
  |___ SpecifyDateExclusion
  |
  |
  |___ Opera10BugFix
Run Code Online (Sandbox Code Playgroud)

很快,你可能会有分支

master
  |
  |
  |___ SpecifyDateExclusion
  |
  |___ Feature1
  |
  |___ Feature2
  |
  |___ Feature3
  |
  |___ Opera10BugFix
  |
  |___ BugFix1
  |
  |___ BugFix2
Run Code Online (Sandbox Code Playgroud)

你可能会问的优势是什么?

优点是在准备发布时它给我的灵活性.假设我的下一个版本主要是关于错误修复.

我将从master创建一个名为'InterimBugFix'的新分支,并合并我所有的bug修复分支.

如果我想创建一个bug /功能发布的混合,我将从master创建一个名为'NextVersion'的分支,并合并我的feature/bug fixe分支.

Git对于你如何管理这些分支非常强大,如果你能想象出来,Git会让你这么做.


Tat*_*son 6

关于Git最好的事情是它不会强迫你做任何决定.关于Git更糟糕的是它不会强迫你做出任何决定.

您的工作流程完全取决于您.您打算合作,还是独立开发?您是否在发布之间有短暂或较长的准备时间?这些约束可能有助于定义合适的工作流程.

我在一个由4名开发人员组成的小团队中工作,并有两周的迭代周期.在周期开始时,我们就范围达成一致并与主人发展.我们期望超过两周的任何东西都会在分支中移动(或开始生命)(这种情况不会经常发生,我们的范围很紧张).

在两周周期结束时,我们执行QA,标记和发布.从下一个周期开始,其他分支将合并回master.

如果您需要修补版本,我们会创建分支,提交,QA,标记和发布.

对于任何实验,我们通常会创建一个新的分支并使其与主分离,直到它适合合并或丢弃.

总之,我们的团队分支时:

  • 功能超过我们的迭代周期
  • 补丁发布
  • 体验功能

我们的工作流程非常集中,可能不是许多Git用户的典型.无论是对还是错,它只是选择最合适的.