何时在git中分支?
我刚开始使用git,虽然它比较容易找出如何使用git做些事,但在与git做些事情时,我很难找出。何时在git中分支?
例如,一个人通常在什么时候分支一个项目?
我在考虑分支当前项目的每个版本,以及何时完成将它与主人合并 - 这是常见的做法吗?
我相信有人会做与我做的事情不同的事情。然而,这是我遵循:
- 始终为每个功能创建一个分支(他们后来合并回)
- 为每个错误分支修复
- 让主分支是干净的通过不使它工作进展(WIP)
我不确定分支当前项目的每个版本是什么意思。
无论如何,你创建'主题分支'的git建议。通过“主题分支”,这意味着您在开发功能/错误时创建分支。假设我正在使用jQueryUI,并且我被要求为jQuery Calendar添加一个功能,该功能允许用户指定不可选择的日期。
如果我在名为master的分支中,我将创建一个名为'SpecifyDateExclusion'的分支并开始进行更改。任何和所有与此功能相关的代码都将进入这个分支。
master
|
|
|___ SpecifyDateExclusion
虽然我正在使用此功能,但是出现了一个错误报告,Opera 10中的日历已损坏,此错误现在需要修复。我回到我的主分支并创建另一个名为Opera10BugFix的分支,并开始修复它中的错误。
master
|
|
|___ SpecifyDateExclusion
|
|
|___ Opera10BugFix
很快,你可以有一个像
master
|
|
|___ SpecifyDateExclusion
|
|___ Feature1
|
|___ Feature2
|
|___ Feature3
|
|___ Opera10BugFix
|
|___ BugFix1
|
|___ BugFix2
什么是你可能会问的优势分支机构?
好处是它在准备我的发布时给予我的灵活性。假设我的下一个版本主要是关于错误修复。
我将从master创建一个名为'InterimBugFix'的新分支,并合并我所有的bug修复分支。
如果我想创建一个bug/feature版本的混合体,我将从master创建一个名为“NextVersion”的分支,并合并我的功能/ bug修复分支。
Git对于如何管理这些分支非常强大,如果你能想象得到,Git会让你做到这一点。
这取决于你的“分支策略”有很多答案。最简单的两个(以我的经验)是任务/功能分支和发布分支。你使用的将取决于你的发布周期如何工作等等。
如果你正在整合并不断释放,然后任务/功能分支意义,因为他们离开了“大师”(在其他VCS主干)在一个相对稳定的状态,使其释放容易。但是如果你有一个更加结构化的发布周期,也许发布分支会更有意义,因为它们可以用来更仔细地定义添加到每个发行版的内容。当然,混合策略也是可行的。
我通常使用任务/功能分支,因此每个错误或功能请求都是分支的。然后工作,完成后,合并回主。
Git最棒的地方在于它不会强迫你做任何决定。 Git的糟糕之处在于它不会对你做出任何决定。
您的工作流程完全取决于您。您是打算合作还是独立开发?发布之间的交付时间短吗?这些限制可能有助于定义合适的工作流程。
我在4名开发人员的小团队中工作,进行为期两周的迭代周期。在周期开始时,我们就范围达成一致并针对主人开发。我们预计超过两周的任何事情都会在分支中移动(或开始生命)(这种情况不会经常发生,我们的范围很紧张)。
在两周周期结束时,我们执行我们的QA,标签和释放。开始下一个周期,那些其他分支合并回主。
如果你需要修补的释放,我们创建了一个分支,提交,QA,标签和释放。
对于任何实验,我们通常会创建一个新的分支,并保持它从主隔绝,直到它适合于合并的,或丢弃。
总之,我们的团队分支时:
- 特点超出我们的迭代周期
- 补丁发布
- 体验功能
我们的工作流程是非常集中的,而且可能不典型许多Git用户。既不是对错,也只是选择最合适的东西。
“针对主人开发” - 这是否意味着您使用主分支进行开发? – LDK 2009-07-28 02:31:16
这是正确的。 – 2009-07-28 06:16:43
这非常重要:Git没有版本控制工作流程。相反,它是一个版本控制工作流构造工具包。就像使用乐高建筑套件一样,将所有东西放在一起都是很多乏味,困难,乏味的工作,但结果会变得非常棒,因为它是你自己建造的,手,它是根据您的需求量身定做的。说得好! – 2009-07-28 15:49:07
Web应用程序开发,我们这样做:
我们维持一个所谓的 “生产” 纯净的分支。它包含在现场网站上存在的代码。
在任务分支中发生的任何更改。所以你可能会看到一个分支Task-13923-add-feature-x。这些分支是从生产分支创建的,并且生产分支在合并到生产之前必须合并到其中(所以它始终是干净快进,没有潜在冲突)。
其他人从合并时的“生产”分支一次进入他们的任务转移到保持最新。
有疑问时,分支。分支机构便宜,新分支机构的信息很容易转移到旧分支机构。当一个分支失效时,它很容易被杀死。
“让主分支干净,不要让它成为工作进行中(WIP)” 我喜欢这个想法。 – LDK 2009-07-28 01:53:20