标签: feature-branch

如何删除已合并的所有Git分支?

我有很多Git分支.如何删除已合并的分支?是否有一种简单的方法可以删除它们而不是逐个删除它们?

git version-control branch github feature-branch

1782
推荐指数
30
解决办法
50万
查看次数

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万
查看次数

Rebase功能分支到另一个功能分支

我有两个(私人)功能分支,我正在努力.

a -- b -- c                  <-- Master
     \     \
      \     d -- e           <-- Branch1
       \
        f -- g               <-- Branch2
Run Code Online (Sandbox Code Playgroud)

在这些分支上工作一段时间后,我发现我需要Branch1中Branch2的更改.我想将Branch2中的更改重新绑定到Branch1上.我想最终得到以下结论:

a -- b -- c                  <-- Master
           \
            d -- e -- f -- g <-- Branch1
Run Code Online (Sandbox Code Playgroud)

我很确定我需要将第二个分支重新绑定第一个分支,但我不完全确定正确的语法以及我应该检查哪个分支.

这个命令会产生预期的结果吗?

(Branch1)$ git rebase --onto Branch1 Branch2
Run Code Online (Sandbox Code Playgroud)

git git-rebase feature-branch

270
推荐指数
5
解决办法
16万
查看次数

在Git中重新定位远程分支

我正在使用一个中间Git存储库镜像远程SVN存储库,人们可以从中进行克隆和处理.中间存储库的主分支从上游SVN每晚重新定位,我们正在开发功能分支.例如:

remote:
  master

local:
  master
  feature
Run Code Online (Sandbox Code Playgroud)

我可以成功地将我的功能分支推回到远程,并最终达到我的期望:

remote:
  master
  feature

local:
  master
  feature
Run Code Online (Sandbox Code Playgroud)

然后我重新设置分支以跟踪远程:

remote:
  master
  feature

local:
  master
  feature -> origin/feature
Run Code Online (Sandbox Code Playgroud)

一切都很好.我想从这里做的是将功能分支重新绑定到远程主分支,但我想从我的本地机器上执行此操作.我希望能够做到:

git checkout master
git pull
git checkout feature
git rebase master
git push origin feature
Run Code Online (Sandbox Code Playgroud)

使远程主控分支与远程主服务器保持同步.但是,这种方法导致Git抱怨:

To <remote>
 ! [rejected]        feature -> feature (non-fast-forward)
error: failed to push some refs to '<remote>'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' …
Run Code Online (Sandbox Code Playgroud)

git version-control branch rebase feature-branch

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

功能切换与功能分支

什么是"功能切换"和"功能分支"以及它们之间的区别是什么?

优缺点都有什么?为什么一个比另一个好?

我在Google上发现了一些关于此问题的文章,我倾向于参加"功能切换"阵营,但我不相信"功能切换"在所有情况下都是更好的选择.

version-control continuous-integration feature-branch featuretoggle

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

如何使用Maven持续构建和部署功能分支?

我的团队正在使用功能分支来实现新功能,并不断将快照构建部署到远程仓库中供我们的用户使用.因此,"部署"实际上只意味着"分发到远程Maven存储库".我们目前只为主分支而不是功能分支运行持续集成构建,原因如下:我们使用Maven构建我们的项目并在JAR旁边分发JavaDoc和源代码.

我的计划现在是为每个功能分支构建添加一个分类器,并期望在创建和部署这样的工件时使用一个分类器:

  • 科:硕士
  • 分类:无
  • 文物:foo-${version}.jar,foo-${version}-sources.jar,foo-${version}-javadoc.jar

  • 分支:特征-X

  • 分类器:myfeature
  • 工件:foo-${version}-feature.jar,foo-${version}-sources-feature.jar,foo-${version}-javadoc-feature.jar

我并不真正关心工件的确切命名,我只需要为功能分支单独的main,source和JavaDoc工件.事实证明,JavaDoc插件和源插件都没有考虑配置的分类器,因此有效地覆盖了为我的主构建创建的工件.

我真的不想改变artifactId,虽然这可能会解决问题.你如何处理功能分支和与Maven的持续集成?

continuous-integration feature-branch maven maven-javadoc-plugin maven-source-plugin

36
推荐指数
4
解决办法
1万
查看次数

git - 分支别名?

我正在研究从starteam到git的转换.

目前,在starteam中,我们使用具有特殊名称的"浮动视图".这些浮动视图基本上像别名一样工作.因此,我们可以指定一个特定的别名来结账,我们将获得我们目前正在进行模型测试的分支.

怎么会在git中完成?这基本上是我们的分支机构的组织方式:

这些都是分支机构

master (stable view)
   |  - Branch 2012.05.01
   |          | - Project 1
   |          | - Project 2
   |          | - model [floating view / alias to Branch 2012.05.01]
   |
   |  - Branch 2012.07.11   (these would also have various child views for projects)
   |  - Branch 2012.10.17
Run Code Online (Sandbox Code Playgroud)

(模型测试完成后,分支2012.05.01将合并为主)

在我们的自动脚本(ant)中运行我们的模型部署,我们只需从我们的分支机构中检出"模型".这样我们就不必改变我们的脚本,因为我们改变了我们模型测试的哪个分支,并找出我们进行模型测试的哪个视图就像确定"模型"分支引用哪个分支一样简单.

有什么方法可以在git中做类似的事情吗?

编辑:人们在这里感到困惑.

  1. 我想要一个分支的别名.分支,而不是提交.
  2. "2012.05.01分支"是指拟于2012.05.01发货的分支机构,并不代表2012.05.01时刻
  3. 我想要分支2012.05.01的别名.Branch 2012.05.01是一个集成分支,它经常被修改.但是我不想把它作为Branch 2012.05.01引用,我想把它称为"模型".这样,我可以将别名更改为"Branch 2012.07.11",它将从该分支获取最新代码,而无需更改任何结帐代码脚本.

git version-control feature-branch branching-and-merging

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

如何将develop分支中的git提交合并到一个功能分支

我的git仓库中有一个开发分支和一个功能分支.我添加了一个开发提交,现在我想将该提交合并到我的功能分支.如果我这样做

git checkout feature
git merge develop
Run Code Online (Sandbox Code Playgroud)

我最终得到了合并提交.由于我将频繁地将关于开发的新提交合并到我的功能分支,所以我想避免所有这些不必要的合并提交.我看到这个答案建议做一个git rebase develop但是它最终会重新绕过我的分支方式而且rebase失败了.

更新: 我最终做的是

git checkout feature
git merge develop # this creates a merge commit that I don't want
git rebase # this gets rid of the merge commit but keeps the commits from develop that I do want
git push
Run Code Online (Sandbox Code Playgroud)

更新:我刚刚注意到,当我合并然后rebase到功能分支时,开发时的原始提交会获得不同的哈希.我不认为这就是我想要的,因为最终我会将功能合并到开发中,我猜这不会很好.

git git-merge git-rebase feature-branch

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

如何在依赖于另一个尚未合并的git分支的新git分支上工作?

这是我的情景:

  • 我的项目遵循主题分支模式.

  • 我创建了一个分支来修复一些问题,让我们调用这个分支problem_fixes.我进行了更改,并提交了拉取请求.

  • 我需要开始处理一个新功能,所以我创建了一个名为my_feature的第二个分支并提交了一系列更改.

  • 在某些时候,我意识到my_feature依赖于尚未被接受和合并的problem_fixes(my_feature分支依赖于第一个分支的一些修复,没有它们我无法取得进展).

如果没有捣乱,我的项目会更快地接受并合并我的第一个分支,这里最好的流程是什么?

我想知道我是否需要基于problem_fixes(而不是master)启动新的第三个分支并在我的提交中合并到my_feature?或者,如果我简单地将problem_fixes合并到my_feature并继续工作也可以 - 假设problem_fixes首先合并为master,当my_feature合并时理论上应该没问题(?)

git branch feature-branch branching-and-merging

26
推荐指数
2
解决办法
3701
查看次数

如何处理实验性非合并git分支?

目前使用git分支创建的最佳实践是为了测试错误的解决方案并且尚未合并,因为审核流程显示错误或有更好的问题解决方案?

一个例子.项目fizzbuzz有一个错误报告,报告空字段崩溃.

  • 我创建了一个新分支handle-empty-fields并对该分支进行了两次提交,"解决"了这个问题.
  • 然后我将该分支提交给fizzbuzz项目经理,并将其链接到错误报告中.
  • 有人在我的修复程序中发现错误,写了另一个补丁并且该补丁被接受了.

现在handle-empty-fields我的代码中的代码是无用的:它不正确,不能再应用于代码,但它已在该错误报告中引用.

我该怎么办?保持分支?我会很快结束几十个被遗弃的分支,而git无法将分支标记为已废弃或已关闭.删除分支?但是那些查看该错误报告的人会发现它并获得404.

通常建议人们不要重新设置他们的存储库,因为这会给其他开发人员带来问题,尤其是下游开发人员.对功能或错误修复分支有什么建议?

更新:看起来github永远不会删除pull请求中包含的提交.因此,如果您推送更改并将其转换为拉取请求,则可以稍后删除该分支而不会丢失任何更改.好吧,虽然github还在工作;).

git github feature-branch

22
推荐指数
2
解决办法
3158
查看次数