将Git支持分支集成到master
我在工作中遇到以下情况,我想不出处理的办法,所以我想寻求一些帮助将Git支持分支集成到master,git,azure-devops,Git,Azure Devops,我在工作中遇到以下情况,我想不出处理的办法,所以我想寻求一些帮助 我们正在遵循git流程,了解产品的核心功能 我们有多个版本行,它们都是从master创建的分支。我的意思是,对于每个客户,我们都会得到一个核心产品的版本(在我们开始的时候),并将其扩展到客户的需要 在某些情况下,我们希望集成核心产品中发生的所有更改 我们通过合并从master到每个分支的更改来实现这一点 我想问的是以下情况: 我们希望从以前版本的master中集成。让我们假设1.3,而大师在1.5 我们在那个带标签的版本中发现了一
- 创建一个分支
,从master1.3
上完成的标记1.3开始,在其中应用该修复李>master
- 在新的
分支上重新设置1.3版本分支的基础(每个客户端一个)master1.3
我想以某种方式重新设置
主管道的基础(不完全是重新设置基础,因为我真的不知道会发生什么事)。
因此,从现在起,所有其他想要集成1.3、1.4和后续版本的开发人员,直到1.5版本,都可以从master获得它
这意味着在1.3提交之后插入修复程序,并应用其余部分(1.4,1.5):这在rebase interactive(git rebase-i
)中是可能的,但问题太大了,因为它会改变每个人都使用的公共分支的历史
因此,我采用了“1.3热修复”分支方法
另一个选项当然是“将该修复添加到当前主机(1.5)并结束它。”:我不建议弄乱master
的提交历史。对于您的情况,我建议您合并将错误修复到master
分支的客户端分支(而不是像1.3一样的旧版本)并在最新的主分支
分支顶部重新设置其他客户分支的基础
让我们来说明为什么不建议将补丁从客户端分支“注入”到较旧版本的master
分支
假设git回购的提交历史记录如下。Client1~4是从master
分支创建的客户端分支,commitA
用于1.3
版本,commitC
用于master
分支上的1.5
。并且在client1
分支上修复了bug
F---G client2 J---K client4
/ /
…---P---A-----------------B---C master
\ \
D---E client1 H---I client3
如果在提交A
中插入修复程序(在主
分支上更改历史提交),则它将导致重新基化的主
分支与原始主
分支分开。将修复注入commitA
和rebasemaster
分支的命令如下:
git checkout -b temp <commit P>
git merge client --squash
git rebase --onto temp <commit A> master
git branch -D temp
正确的方法应该将client1
分支合并到master
分支中,然后在master
branch的顶部重新设置其他现有客户分支的基址。具体步骤如下:
git checkout -b temp <commit P>
git merge client --squash
git rebase --onto temp <commit A> master
git branch -D temp
1.将client1分支合并到主分支
执行以下命令将client1
合并到master
分支中:
git checkout master
git merge client1
git push origin master
然后提交历史记录将是(M
是合并提交):
2.在主分支顶部重定其他现有客户分支的基址
要在master
分支顶部重新设置其他客户端分支的基础,只需分别在客户端分支上执行git pull origin master--rebase
:
# rebase client2 branch
git checkout client2
git pull origin master --rebase
# rebase client3 branch
git checkout client3
git pull origin master --rebase
# rebase client4 branch
git checkout client4
git pull origin master --rebase
然后提交历史记录将为:
J'---K' client4
/
F'---G' client2
/
…---P---A---B---C---M master
\ / \
D-------E H'---I' client3
现在,所有现有的客户机分支都包含对bug fixed的更改。如果创建了新的客户端分支,它们还将包含对已修复错误的更改。我希望以某种方式重新设置主管道的基础(不完全是重新设置基础,因为我真的不知道会发生什么)。因此,从现在起,所有其他想要集成1.3、1.4和后续版本的开发人员,直到1.5版本,都可以从master获得它。这就是问题的重点。@AnastasiosSelmanis我编辑了我的答案以回应你们的评论。谢谢你们的回答。老实说,从我搜索的情况来看,我担心情况会是这样。如果有人有更多的建议,我将继续提问:)
J'---K' client4
/
F'---G' client2
/
…---P---A---B---C---M master
\ / \
D-------E H'---I' client3