Questions tagged «branching»

修订控制中的分支是复制受修订控制的对象,以便可以沿两个分支并行进行修改。

2
像Git Flow这样的合并策略真的是一种反模式吗?
我的公司正在使用Git,并且正在使用一种特殊的分支方案-工作是在master中完成的,分支保留用于发布。只要在迭代中完成的所有工作都可以进入分支,就可以很好地工作,但是,如果出现关键的生产问题,我们必须确保将工作以某种方式进入两个分支。 最近,我们在那些分支机构中获得了一些“乐趣”。这一直是管理上的头疼事,要确保所有工作都进入每个分支,并且某个分支上已修复的一些错误只有在有人指出时才成为主要问题。 我前段时间遇到了Git Flow,我觉得这将解决我们的问题-代码不会一直渗透到发行版中,也不会渗透到整个发行版中。唯一的收获是我的领导说这种发展是一种反模式-疯狂发展了两个星期,然后花了三个星期来解决合并冲突。 我不确定自己是否同意,并且自提出以来,工作恢复正常了。直到最近,我们才有了一些重大的痛点。 我想知道-为什么将这种开发方案视为反模式? 是真的反模式?

10
您如何避免在错误的分支上工作?
通常,小心就足以防止问题发生,但是有时我需要通过检查随机变量的源代码控制路径来仔细检查我正在处理的分支(例如 “嗯……我在dev分支中,对吗?”)文件。 在寻找一种更简便的方法时,我想到了相应地命名解决方案文件的名称(例如 MySolution_Dev.sln),但是每个分支中的文件名不同,因此我无法合并解决方案文件。 没什么大不了的,但是您有没有使用任何方法或“小技巧”来快速确保您位于正确的分支中?我正在将Visual Studio 2010与TFS 2008一起使用。


6
我什么时候应该停止致力于掌握新项目?
每当一个新项目开始时,通常首先要直接向master提交,直到获得“稳定”的东西,然后再开始在分支中工作才有意义。 至少,这是我通常的做法。有没有办法立即从第二次提交开始分支?以这种方式这样做有意义吗?显然,“ Initial Commit”将始终处于主状态,但是在那之后,我何时才知道是为新功能创建分支的合适时间?

8
Git-直接在master上工作会出现什么问题?
我已经看到了很多有关git分支模型的建议,最普遍的观点似乎是直接在master分支上进行更改是一个坏主意。 我们的一位同事很高兴直接在主分支上进行更改,尽管进行了几次交谈,但他们似乎不太可能更改此更改。 在这一点上,我无法说服一个不擅长直接在师傅上工作的同事,但我想了解会与他的工作方式相抵触的事物,知道何时需要重新访问这个问题。

7
当构建几乎总是被破坏时如何保持效率
我在一个中型团队中工作,该团队共享相同的源代码,并且有持续的集成,但是由于我们所有人都必须在同一个分支中工作,因此构建几乎总是被破坏。 我们还有一条规则,该规则最近被引入以减轻损坏的构建,该规则指出在构建为红色时不允许任何人签入。 话虽这么说,一天中每个人都只有几个10-15分钟的窗口,我们可以在那里办理登机手续。 并且随着团队的成长,签到机会的窗口会进一步缩小。这迫使开发人员在本地积累他们的更改,从而导致更大的更改集,这甚至更加难以确保更改不会破坏任何内容。您可以看到恶性循环。 您能推荐什么使我在这样的环境中保持有效的工作。另外,请记住,我是开发人员,而不是经理,并且不能改变流程或其他人的行为。

4
如何将库的不同版本置于版本控制之下?您是否使用标签?还是分支机构?还是其他方法?
我最近开始将代码置于版本控制下(在实验室中,我正在SVN下工作,而我自己的代码在github中(显然是git))。在使用版本控制之前,我曾经做过类似的事情。我有一个带库名称的文件夹,其中有许多带版本号的文件夹。每当我想开始使用新版本时,我都会复制上一个版本,将名称更改为新版本并开始实施。 但是,当将文件夹置于版本控制下时,这似乎是多余的。除了冗余之外,如果有人想获得最新版本,那么只要他import/ 她就可以下载所有版本clone。 现在,我看到了使用版本控制执行此操作的许多方法,但是由于我是新手,所以我不知道哪种方法更可维护。 方法1:使用标签 如果我正确地理解了标签,那么您将拥有主分支,您可以进行所做的任何更改并使用版本进行标签。然后,当您想要获得它的工作副本时,您将获得带有特定标签的副本。(如果我错了纠正我) 方法2:分支版本 在这种方法中,主要分支将是开发分支。时不时地制作一个稳定的版本(例如v1.2.0),您为该版本创建一个分支,并且永远不要提交它。这样,如果您要下载某个版本,则可以从该分支获取代码。尽管我说过您从未承诺过这样做,但有可能进行错误修复并承诺到旧版本的分支以保持旧版本运行。例如,如果当前版本为v2.0,但是有些人想要使用v1.2,则可以从中获取另一个分支v1.2,即v1.2.1提交错误修复程序,或者仅将版本保持不变,v1.2然后提交错误修复程序。 所以分支看起来像这样: v1.2.1 v1.2.2 / / v1.0.0 v1.2.0--------- v2.0.0 / / / -------------------------------------- dev 这样,您可以为每个次要版本更新创建分支。(请注意,在上图中,v1.2.1和v1.2.2或在v2.0.0发布之后创建的,因此它们不是v1.2.0和v2.0.0之间的开发的一部分。可以将其视为对较早版本的支持) 方法3:分支发展 此方法与以前的方法相反。主分支将是最新的稳定版本。每当使用新版本时,都将创建一个分支(用于开发),使用您的代码,并在代码稳定后将其与主分支合并。 在这种情况下,分支看起来像这样: ________ ____ ________________ _____ dev / \/ \/ \/ ---------------------------------- latest_version 可能需要结合标签一起执行此操作吧? 问题! 无论如何,我的问题是,根据您的经验,这些方法中的哪一种被证明更实用?有没有已知的最佳方法(可能我没有弄清楚自己)?这些事情通常是怎么做的?

5
当所有开发都在分支机构上时,如何重构?
在我公司,我们所有的开发(错误修复和新功能)都在单独的分支机构进行。完成后,我们将其发送给质量检查人员(QA),由该人员在该分支机构对其进行测试,当他们给我们开绿灯时,我们会将其合并到我们的主分支机构中。这可能需要一天到一年的时间。 如果我们尝试压缩分支上的任何重构,我们将不知道它会“退出”多长时间,因此在合并回它时会引起许多冲突。 例如,假设我要重命名一个函数,因为我正在使用的功能正在大量使用此功能,而我发现它的名称确实不符合其用途(再次,这只是一个示例)。因此,我四处寻找该函数的每种用法,并将它们全部重命名为新名称,并且一切正常,因此将其发送给质量检查人员。 同时,正在进行新的开发,并且我的重命名函数在main分支的任何分支上都不存在。当我的问题重新合并后,它们都会崩溃。 有什么办法解决吗? 并不是说管理部门会批准仅重构的问题,因此必须将其与其他工作联系在一起。它不能直接在main上进行开发,因为所有更改都必须经过质量检查,而且没人愿意成为打破main的混蛋,以便他可以执行一些不必要的重构。

3
质量检查团队应该在哪里进行Gitflow分支模型的测试
我们是一个庞大的团队(10-12个开发人员和4个质量保证团队),他们使用同一个git存储库处理多个项目。它是一个基于Spring Boot的后端Web服务。我们正在寻找一个好的git分支和部署策略。我们还有一个质量保证团队,可以确保我们的功能能够按预期运行(一定程度上没有错误)。 看了几篇文章后,我感到Gitflow模型对我们来说很好用。我的问题来了。 我们的质量检查团队应该在哪里测试我们的功能? 如果他们在功能分支上进行测试,他们将在这里提出错误,开发人员将对其进行修复,一旦通过质量检查,我们将合并以进行开发。然后质量检查人员将再次在开发分支中进行整数测试。 我们是否应该合并所有功能(在经过单元测试和开发人员的基本测试之后)以开发分支,然后从那里进行质量检查。修复和测试也将在开发中进行。 我很想知道哪种方法对其他人有效。
23 testing  git  branching  qa  gitflow 

3
从功能分支合并到母版之前进行代码审查的策略
我和我的团队使用功能分支(带有git)。我想知道哪种是合并到母版之前进行代码审查的最佳策略。 我从master结帐了一个新分支,我们称它为fb_#1 我提交了几次,而不是想将其合并回母版 在合并之前,应该有人进行代码审查 现在有两种可能性: 第一 我将master合并到fb_#1(不是将fb_#1合并到master)以使其尽可能最新 队友查看了主管和fb_#1主管之间的变化 如果fb_#1可以,我们将fb_#1合并到主服务器 优点:审查中没有过时的代码 缺点:如果其他人将“ 1”之间的内容合并。和“ 2”。他的更改将出现在评论中,尽管它们属于另一个评论。 第二名 队友查看结帐点(git merge-base master fb_#1)和fb_#1 head之间的更改 优点:我们可以清楚地看到在功能分支上所做的更改 缺点:评论中可能会出现一些过时的代码。 您认为哪种方法更好?为什么?也许还有另一种更合适的方法?

1
重构在GitFlow分支命名模型中属于什么地方?
我最近开始使用由bitbucket实现的GitFlow模型。我有一件事还不完全清楚。 我们试图通过积压,计划和实施重构任务来定期解决我们的技术债务。这样的重构分支以合并到中的拉取请求结束develop。我的问题是重构分支在哪里属于GitFlow? 使用feature前缀似乎是最合乎逻辑的方法,但是感觉并不完全正确,因为重构不会添加任何新功能。 但是,使用bugfix前缀似乎并不正确,因为没有实际的错误重构修复程序。 另一方面,如果不过度设计,则创建自定义前缀看起来很复杂。 你有这种情况吗?您使用哪种做法解决此问题?请解释原因。

4
处理长期项目的产品版本控制和分支的最佳方法是什么?
一般而言,对于在产品生命周期中可能有多个版本并且需要先前产品支持的长期项目,处理产品版本和代码分支的最佳方法是什么? 从更具体的意义上说,假设适当的分布式版本控制在位(即git),并且团队的大小由小到大,并且开发人员可能同时从事多个项目。面临的主要问题是,有合同义务支持当时存在的旧版本,这意味着新开发无法修补旧代码(Microsoft Office产品可能就是其中的一个示例,您只能获得针对您拥有的功能年份)。 结果,当前的产品版本控制令人费解,因为每个主要产品都具有多个依赖项,每个依赖项都有其自己的版本,这些版本可能会在年度版本之间发生变化。同样,尽管每个产品都有其自己的存储库,但大部分工作不是在主要源主干上完成,而是在该年产品发布的分支上完成,而在发布产品时将创建一个新的分支,以便对其进行支持。反过来,这意味着获得产品的代码库并非易事,因为使用版本控制时可能会想到。

5
为什么git commit不包含在其上创建分支的名称?
在使用功能分支的团队中使用git时,我经常发现很难理解历史上的分支结构。 例: 假设有一个功能分支Feature / make-coffee,并且在master上与该功能分支并行地进行了错误修复。 历史记录可能如下所示: * merge feature/make-coffee |\ | * small bugfix | | * | fix bug #1234 | | | * add milk and sugar | | * | improve comments | | * | fix bug #9434 | | | * make coffe (without milk …
20 git  branching 

2
在git中,创建与已删除分支同名的标记是个坏主意吗?
我有一个带有git分支模型的项目,该模型大致遵循nvie的git-flow的模型。 我们的发行分支以SemVer格式命名,例如v1.5.2 一旦发布分支允许生产,我们就关闭该分支,方法是将其合并到master中,应用标签,然后删除该分支。 当我们立即删除发布分支时,我们一直在使用相同的标识符来标记分支,例如 v1.5.2 这是我们用于关闭发布分支的命令: $ git checkout master $ git merge v1.5.2 $ git tag -a v1.5.2 -m "Version 1.5.2 - foo bar, baz, etc" $ git branch -d v1.5.2 $ git branch -dr origin/v1.5.2 $ git push origin :v1.5.2 $ git push $ git push --tags 这似乎在大多数情况下都可行,但是在git …

8
防止分支堆积
随着我们变得越来越大,我们开始遇到问题,其中的功能使其可以分阶段进行测试,但是到所有测试和批准的新功能都在分阶段进行测试时。 这创造了一个环境,在该环境中我们几乎永远无法投入生产,因为我们拥有经过测试和未经测试的功能的组合。我敢肯定这是一个普遍的问题,但是我还没有找到对我们有用的资源。 一些细节: BitBucket上的GIT Jenkins用于脚本部署到Azure 我希望找到一种隔离特征的方法,使它们在环境中移动并仅推送准备就绪的产品。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.