可能重复:
如何挑选一系列提交并合并到另一个分支
我想从一个分支中挑选19个提交并将它们应用到另一个分支.所有提交都是顺序的(提交1,提交2 ...提交19),最后一次提交不是最近的提交(即在其之后还有其他提交,我不想应用它们的更改).如何在不git cherry-pick为每次提交键入的情况下将更改应用于分支?
问题是关于git-flow方法的一些边缘情况
我有一些典型的git-flow历史,如下所示:
o---o---o---o [release-3.5.0]
/
----o---o---o---o---o [development]
Run Code Online (Sandbox Code Playgroud)
Git-flow告诉我们将release-3.5.0分支合并到开发中然后发布就绪了.因此,最终我们将获得所有更改,在发布分支进入开发分支.
o---o---o---o
/ \
----o---o---o---o---o [development]
Run Code Online (Sandbox Code Playgroud)
现在想象一下,我们有一个承诺上发布分支"X"我们不要想在开发分支,例如它是某种这已经是更理智的方式固定在发展黑客/修补程序或其他的(按提交ÿIE)
o---X---o---o [release-3.5.0]
/
----o---o---o---Y---o [development]
Run Code Online (Sandbox Code Playgroud)
那么,主要问题是如何处理这种情况呢?如何防止此提交(或提交)重新进入开发?
我尝试合并两个repos,产生一个平坦的(也就是交错的)历史.我按照"历史记录重写:"下的/sf/answers/1038775741/这样做.
要合并的两个分支是"master"和"src/master".然后,我写道:
$ git checkout --orphan new-master
$ git cherry-pick 9d325d6d 3f4c52ba
error: a cherry-pick or revert is already in progress
hint: try "git cherry-pick (--continue | --quit | --abort)"
fatal: cherry-pick failed
$ git cherry-pick 9d325d6d && git cherry-pick 3f4c52ba
[new-master 10f0277] Initial revision.
7 files changed, 194 insertions(+)
create mode 100644 __init__.py
create mode 100644 manage.py
create mode 100644 samples/__init__.py
create mode 100644 samples/models.py
create mode 100644 samples/views.py
create mode 100644 settings.py
create mode 100644 urls.py …Run Code Online (Sandbox Code Playgroud) 我将一个feature分支合并回master并删除了feature分支.但它仍然出现在树上.
feature正如预期的那样,左侧列表中的分支消失了,树形可视化中的标签也消失了,同样如预期的那样.
但:
我知道上面截图中的最终提交有两个父母.但我不明白为什么在功能分支上发生的紫罗兰提交不在最终合并提交内master(我认为,这意味着紫罗兰分支在删除之后不再可见).
我在命令行上重播它(只是为了检查SourceTree是否做了我认为它做了什么),最后一步是a git merge feature.相同的情况:
--squash我解除了最后一次合并并尝试了这个:
git merge --squash feature
git commit "Squashed merge"
git delete -D feature # Note that -d did not work; it said "error: The branch 'feature' is not fully merged."
Run Code Online (Sandbox Code Playgroud)
现在它显示了我本来期望的东西.一条直线,没有任何feature分支表示:
我想在上面的所有试验和错误之后我将这些合并发生的事情拼凑在一起,但如果有人能够真正详细解释上述步骤的语义差异,我将不胜感激.
我们有一个标准的Web项目,并为该项目维护3个核心分支:Master,Beta和Develop.以下是我们使用的流程/工作流程的摘要:
(1)请求新功能/更新,以便我们创建新的功能分支.
(2)为新功能分支进行提交,并将功能分支合并到"开发"分支中; 然后将"开发"分支发布到要测试的测试环境.
(3)测试/批准新功能后,在同一功能分支中进行新的拉取请求; 这个新的pull请求被合并到'Beta'分支中.
'Beta'分支拥有我们所有的"准备就绪"功能:事实上,我们将'Beta'分支直接发布到生产环境,当它准备就绪时,我们立即将'Beta'分支合并到'Master'分支......通过这样做,'Master'分支始终是生产环境中代码的副本.
问题:在上面的步骤3中,当我们尝试将新的Feature分支合并到'Beta'分支时,pull请求包括已合并到'Develop'分支的所有新提交.
示例:5个要素分支分别合并到"Develop"分支(分支标记为1,2,3,4和5).所有5个都经过了测试,但是前面有4个错误.所以分支"5"被批准,我们尝试为该功能分支创建一个拉取请求并将其合并为"Beta"....但是当我们这样做时, pull请求包括所有5个功能分支....而不仅仅是分支"5"的提交.
我们必须做错事!我们可以做些什么来修复我们的流程/工作流程?
我们有以下设置:三个相似的应用程序,将公共代码提取到框架中.每个应用程序都在自己的git存储库中进行管理,并将框架作为git子模块包含在内.
问题是,现在应用程序与并行开发的新功能被添加到框架中,其他应用程序不需要立即支持.目前,我们为所有应用程序提供了不同的框架分支.一个应用程序使用框架的主分支,因为大多数时候新功能首次在此应用程序中引入.
框架分支
当appB中引入了一个需要在框架中进行更改的新功能时,会对分支appB进行更改.如果以后需要在App A中进行这些更改,则将分支appB合并为master.这意味着appB中的所有更改都必须合并到master中.
这个系统有效,但有一些缺陷
我们目前正在寻找新的工作流程.我考虑过拥有以下分支机构
因此,对于每个应用程序,一个分支和一个包含所有更改的主分支.在开发新功能时,应创建功能分支,然后将其应用于主分支以及所有应用分支,立即需要该功能.其他应用程序可以在以后需要该功能时合并功能分支.
我看到了以下问题
我的目的是实现这一目标的最佳方式还是我应该完全重新考虑我的策略?
我们正在使用git来跟踪开发和版本化版本,并遇到了一些合并分支的问题.这是我们的工作流程:
production/1.0.0 A--B
stage/2.0.0 A--B--C--D
development E--F--G--J--L
\
feature H--I--K
Run Code Online (Sandbox Code Playgroud)
功能开发发生在从开发创建的功能分支上,并在准备好时合并回来进行演示和测试.
这一切都运行良好,问题是创建该功能分支的开发人员将他们的功能放入阶段分支进行部署.因为它们在G开发时分支,当它们合并时,它包括EFG,当他们只想合并HIK时.
我们的git工作流的目标是让开发人员标记他们自己的代码以备发布,并协调整个开发分支将能够合并到部署分支是不可行的,因为开发在世界各地发生.
是否有一个git命令来合并在功能分支上进行的提交?我知道rebase和cherry pick,但是一个功能可以由大量的提交组成,其中包括开发追赶其功能分支的合并.有更好的解决方案吗?
这个工作流程正确吗?我们是在尝试做一些不可持续的事情吗?
假设我有一个主线分支和一个功能分支.我已经多次将主线分支合并到功能分支中,但是我只有一些非常小的合并冲突.我想清理历史记录,以便最后只有一个合并.这样做的最佳方法是什么?
在过去的几个月里,我们一直在工作中松散地跟踪 git flow,但遇到了漫长的 QA 等待问题。
这是我们的流程:
不幸的是,客户有时可能需要长达数周的时间来批准一项功能。这可能是由于积压、内容创建、人员流动等原因。
但是,与此同时,新功能可能已合并到开发中并推送到开发服务器进行审批。假设第二个功能获得批准并需要尽快部署(当然)。我如何在不带第一个功能的情况下从 dev 中获得第二个功能?
我是git的新手,并试图围绕分支的工作方式.根据文档git checkout
更新工作树中的文件以匹配索引或指定树中的版本.如果>没有给出路径,git checkout也会更新HEAD以将指定的分支设置为>当前分支.
所以据我所知,我工作的目录中的文件(我执行git init的文件)应该根据我所在的分支进行更改.我很困惑,因为当我在分支之间切换时不会发生这种情况.在切换分支之前我正在编辑的编辑存在于我切换到的分支中.我做错了什么或git checkout不能这样工作,我只是误解了文档?
git ×10
git-branch ×3
git-merge ×3
git-flow ×2
branch ×1
git-rebase ×1
git-workflow ×1
github ×1
merge ×1