标签: git-flow

Git将master合并到功能分支中

让我们说我们在git中有以下情况:

  1. 创建的存储库:

    mkdir GitTest2
    cd GitTest2
    git init
    
    Run Code Online (Sandbox Code Playgroud)
  2. 主服务器中的一些修改发生并得到提交.

    echo "On Master" > file
    git commit -a -m "Initial commit"
    
    Run Code Online (Sandbox Code Playgroud)
  3. Feature1分支主,一些工作完成:

    git branch feature1
    git checkout feature1
    echo "Feature1" > featureFile
    git commit -a -m "Commit for feature1"
    
    Run Code Online (Sandbox Code Playgroud)
  4. 同时,在主代码中发现错误并建立了修补程序分支

    git checkout master
    git branch hotfix1
    git checkout hotfix1
    
    Run Code Online (Sandbox Code Playgroud)
  5. 该错误在修补程序分支中修复并合并回主服务器(可能在拉取请求/代码审查之后):

    echo "Bugfix" > bugfixFile
    git commit -a -m "Bugfix Commit"
    git checkout master
    git merge --no-ff hotfix1
    
    Run Code Online (Sandbox Code Playgroud)
  6. feature1的开发继续:

    git checkout feature1
    
    Run Code Online (Sandbox Code Playgroud)

现在我的问题:说我需要我的功能分支中的修补程序,可能是因为那里也出现了错误.如何在不将提交复制到我的功能分支的情况下实现此目的?我想阻止在我的功能分支上获得两个与功能实现无关的新提交.如果我使用Pull请求,这对我来说尤其重要:所有这些提交也将包含在Pull Request中,并且必须进行审核,尽管已经完成(因为修补程序已经在主服务器中).

我做不到git merge master --ff-only:"致命:不可能快进,堕胎."但我不确定这是否对我有所帮助.

git feature-branch git-flow git-branch

892
推荐指数
9
解决办法
108万
查看次数

从另一个分支在Git中创建一个分支

我有两个分支:masterdev

我想从dev分支创建一个"功能分支" .

目前在分支开发,我做:

$ git checkout -b myfeature dev
Run Code Online (Sandbox Code Playgroud)

... (一些工作)

$ git commit -am "blablabla"
$ git push origin myfeature
Run Code Online (Sandbox Code Playgroud)

但是,在对我的树枝进行可视化之后,我得到了:

--**master**
------0-----0-----0-----0-----0
------------------------**dev**----**myfeature**
Run Code Online (Sandbox Code Playgroud)

我的意思是分支似乎合并了,我不明白为什么......

我做错了什么?

请问您如何解释我如何从另一个分支分支并推回到功能分支的远程存储库?

所有这些都在分支模型中,就像这里描述的那样.

git git-workflow git-flow git-branch

850
推荐指数
9
解决办法
99万
查看次数

Git分支策略与测试/ QA流程集成在一起

我们的开发团队一直在使用GitFlow分支策略,它一直很棒!

最近我们招募了一些测试人员来提高我们的软件质量.这个想法是每个功能都应该由测试人员测试/ QA.

过去,开发人员在单独的功能分支上处理功能,并develop在完成后将它们合并回分支.开发人员将在该feature分支上自行测试他的工作.现在有了测试人员,我们开始问这个问题

测试人员应该在哪个分支上测试新功能?

显然,有两种选择:

  • 在个别功能分支上
  • develop树枝上

测试开发分支

最初,我们相信这是肯定的方法,因为:

  • develop自开发开始以来,该功能已与所有其他功能合并到分支进行测试.
  • 任何冲突都可以在以后检测到
  • 它使测试人员的工作变得轻松,他只是在处理一个分支(develop).他不需要向开发人员询问哪个分支是针对哪个功能的(功能分支是由相关开发人员独立管理的个人分支)

最大的问题是:

  • develop分支被污染与臭虫.

    当测试人员发现错误或冲突时,他会将它们报告给开发人员,开发人员会在开发分支上修复问题(功能分支在合并后被放弃),之后可能需要更多修复.多个子序列提交或合并(如果develop再次在分支上重新创建分支以修复错误),develop如果可能的话,从分支回滚功能非常困难.develop在不同时间有多个功能合并到分支并在其上固定.当我们想要创建仅包含develop分支中某些功能的版本时,这会产生一个大问题

功能分支测试

所以我们再次思考并决定我们应该在功能分支上测试功能.在我们测试之前,我们将更改从develop分支合并到功能分支(赶上develop分支).这很好:

  • 您仍然可以使用主流中的其他功能测试该功能
  • 进一步的开发(例如错误修复,解决冲突)不会污染develop分支;
  • 在完全测试和批准之前,您可以轻松决定不发布该功能;

但是,存在一些缺点

  • 测试人员必须合并代码,如果有任何冲突(非常可能),他必须向开发人员寻求帮助.我们的测试人员专门从事测试,无法编码.
  • 可以在不存在其他新功能的情况下测试功能.例如,特征A和B同时都在测试中,这两个特征彼此不知道,因为它们都没有合并到develop分支.这意味着,develop无论如何,当两个功能都合并到开发分支时,您将不得不再次测试分支.你必须记得将来测试这个.
  • 如果功能A和B都经过测试和批准,但在合并时发现冲突,两个功能的开发人员都认为这不是他自己的错误/工作,因为他的功能分支超过了测试.沟通会产生额外的开销,有时解决冲突的人会感到沮丧.

以上是我们的故事.由于资源有限,我想避免在所有地方进行测试.我们仍在寻找更好的方法来应对这种情况.我很想知道其他团队如何应对这种情况.

git testing qa git-flow

120
推荐指数
4
解决办法
3万
查看次数

git-flow与github-flow的优点和缺点是什么?

我们最近开始使用GitLab.

目前正在使用"集中式"工作流程.

我们正在考虑转向github-flow,但我想确定一下.

git-flowgithub-flow的优点和缺点是什么?

git-flow gitlab

115
推荐指数
3
解决办法
5万
查看次数

Git flow release分支和标签 - 带或不带"v"前缀

我在各种git flow相关网站上看到了多个矛盾的定义.是否有官方推荐或单一事实来源?

分支机构:release-1.2.3release-v1.2.3

标签:1.2.3v1.2.3

git naming-conventions git-flow

102
推荐指数
3
解决办法
3万
查看次数

在git-flow之后你应该如何处理早期版本的修补程序?

如果您尝试按照混帐流分支模型,记录在这里,并与这里的工具,你应该如何处理这种情况:

您已经发布了1.0版本和2.0版本.然后你需要为1.0创建一个修补程序.您从1.0标记创建一个修补程序分支,并在那里实现修复.那么呢?

通常,您将合并为master并在其中放置1.1版本标记.但是你不能将1.1合并到主控之后的2.0之后.

我猜你可以把release标签放在hotfix分支上,但是这会在master上创建一个包含release标签的永久分支.这是正确的方法吗?

git branch hotfix git-flow

91
推荐指数
3
解决办法
3万
查看次数

Sourcetree - 升级到最新版本,缺少git-flow

嘿,我刚刚将Mac上的Sourcetree更新为最新版本(2.2).git-flow去哪儿了?

我该如何重新启用此功能?

我没有它就迷失了自己!

git-flow atlassian-sourcetree

85
推荐指数
3
解决办法
2万
查看次数

Git flow - 从另一个功能分支创建功能分支

我已经使用git flow了一段时间了.我很想知道具体的用例.

对于我的一个项目,我有一个新网站功能的门票.此票证取决于许多子任务.我想为主故障单创建一个功能分支,然后为每个子任务创建一个父功能分支的功能分支.

我们假设我有一张PROJ-500票,我为它创建了一个功能分支

git flow feature start PROJ-500
Run Code Online (Sandbox Code Playgroud)

然后我想整合门票PROJ-501通过PROJ-515PROJ-500整个事情纳入前develop.有没有办法让我做类似的事情

git flow feature start PROJ-511 -b PROJ-500
Run Code Online (Sandbox Code Playgroud)

然后超时这些子任务完成,当他们的功能完成时,分支被合并到PROJ-500.

git flow feature finish PROJ-511
Run Code Online (Sandbox Code Playgroud)

上面的命令将合并PROJ-511PROJ-500

一旦所有子任务完成,那么PROJ-500将完成并合并到develop.

通过这种方式,新网站功能可以集成到单个单元而不是零碎的单元中.

git git-flow

78
推荐指数
4
解决办法
3万
查看次数

试图了解Travis CI的作用以及何时应该使用它

我是Git的新手,我计划在发现GitHub中的一个小错误之后为GitHub上的一些开源项目做出贡献.在分叉并修复错误后,我提出了一个拉取请求,我注意到了这一点:

失败 - Travis CI构建失败

查看详细信息,我发现它是由Could not find .travis.yml,由于我没有登录Travis Cl并将.travis.yml添加到存储库,因此非常有意义.

这是我第一次听说特拉维斯以及所谓的持续整合.这听起来很酷,所以为了更多地了解它,我在维基百科上查了一下.

Travis CI是一种托管的分布式持续集成服务,用于构建和测试GitHub上托管的项目.Travis CI会自动检测何时提交并推送到使用Travis CI的GitHub存储库,每次发生这种情况时,它都会尝试构建项目并运行测试.这包括对所有分支的提交,而不仅仅是对主分支的提交.

我目前对Travis CI的理解是它所做的是自动推动项目git commit -am "..",我不太了解它的某些部分.

  1. 通过构建项目并运行测试,它将运行哪些测试?它如何"构建"该项目?(比如把它编译成二进制文件?)

  2. 它声明"这包括对所有分支的提交" - 但是如果我不想承诺所有分支怎么办?

  3. 如果我根本不使用Travis Cl,那好吗?在什么情况下最好使用它(或必须使用它)?

git git-flow travis-ci

76
推荐指数
2
解决办法
2万
查看次数

Git-flow和master具有多个并行释放分支

我们正在尝试采用git-flow实现的成功的Git分支模型.现在,我们正在开发至少两个发布分支,一个用于最新的稳定版本,另一个用于下一个("预览")版本.我不明白为什么所有版本似乎都"线性化"到主人并在那里标记.为什么不在发布分支中标记发行版?为什么大师呢?或者为什么开发分支而不是使用master呢?

git git-flow

75
推荐指数
2
解决办法
5万
查看次数