branch - git 多版本并行发布时,该创建多个项目还是多个分支
世界只因有你
世界只因有你 2017-05-02 09:19:04
0
4
1540

git 做单版本在线的项目是很成熟的,流程很清晰,每个issue创建一个branch,然后合并到master,打tag即可。
比如web项目,发布了1.0.0,然后修bug发布1.0.1、 1.0.2,新功能1.1.0、 1.2.0,改版大功能2.0.0 。只有一个版本在维护,一般不会出现 1.0.0 和 2.0.0 同时都在发布新版的情况。
git简单流程:http://rogerdudler.github.io/git-guide/index.zh.html

复杂点的流程:http://jiongks.name/blog/a-successful-git-branching-model/

但多版本并行发布的时候怎么办?
以Ubuntu系统为例,14.04 、 14.10 、 15.04 同时存在,14.10发布后,14.04也在持续的发布新版,比如14.04.1 、 14.04.2。

如果按照上面的git简单工作流程:
14.04在master里打tag发布了,下一个里程碑是14.10,很多人开发了很多分支,然后合并到master里,每天发布daily build版,看起来很美好。
突然,14.04有个紧急bug要修复,不可能等几个月等到14.10发布时带着一起修复,需要发布14.04.1那怎么办?从哪里checkout 14.04的代码?即使从tag里checkout下来了,修复完毕,合并到哪里?只能合并到master,但master是14.10,不能发布啊。

如果按照git复杂流程:
14.04在master里打tag发布了,下一个里程碑是14.10,很多人开发了很多分支,然后合并到develop分支里,每天发布daily build版。
突然,14.04有个紧急bug要修复,从master拉一个分支叫做hotfix-xxx,修复完毕,合并到master,打tag,发布14.04.1 。也合并到develop。
当14.10开发完毕,打算发布时,从develop拉一个分支叫做release-14.10,收尾完毕,把release-14.10合并到master,打个tag,发布了。也合并到develop,看起来很美好。
突然,14.04又有个紧急bug要修复,需要发布14.04.2怎么办?从哪里checkout 14.04.1的代码?即使从tag里checkout下来了,修复完毕,合并到哪里?只能合并到master,但master是14.10啊。

难道是每个版本一个项目? 比如 14.04 、14.10 、15.04 是3个项目?
这样感觉很奇怪,不优雅。请教大家有没有什么好办法。

世界只因有你
世界只因有你

모든 응답(4)
为情所困

tag:v14.04에서 브랜치를 가져와서 branch:14.04.1-dev이라고 부르고 그 안에서 개발하면 됩니다. 일단 안정되면 tag:v14.04.1만 추가하면 됩니다. "브랜치 => 개발 => 병합"을 고수할 필요가 없습니다. . Merge할 필요가 없을 때는 그냥 Merge하지 않고 해도 전혀 문제가 없습니다. 특히 여러 버전이 동시에 유지되는 경우에는 Cherry-Pick이 Merge를 대체하는 것이 일반적입니다

그러나 git master는 실제로 약간 혼란스럽습니다. 프로젝트마다 전략이 다릅니다. 일부 master는 안정적인 버전을 포함하는 stable을 의미하고, 일부는 반대로 master는 dev를 의미합니다. 안정적인 버전. 일부 마스터는 릴리스를 의미하며, 이는 "온라인 배포와 일관성을 유지하는 코드"를 의미합니다. 그래서 master를 직접 사용하는 것이 아니라 좀 더 구체적인 브랜치 이름을 사용하는 것이 더 나은 전략이 아닐까요?

我想大声告诉你

릴리스에는 해당 릴리스 브랜치가 있습니다

为情所困

설명하신 시나리오에서 다른 브랜치나 다른 프로젝트의 다른 버전은 기본적으로 동일하다고 생각합니다. 왜냐하면 다른 브랜치는 기본적으로 병합되지 않기 때문입니다(브랜치 이름에 대해 너무 많이 걱정할 필요가 없습니다). 그래서 다른 버전에 변경 사항을 적용해야 할 경우에는 다음과 같은 방법을 고려해 볼 수 있다고 생각합니다.

  • git 서브모듈 관리 모듈을 사용하여 변경 시 서브모듈에 해당하는 해시를 직접 수정할 수 있습니다.
  • 다점 관리 이용 시

    • git Cherry-Pick을 사용하여 커밋 병합
    • git checkout을 사용하여 개별 파일을 직접 가져옵니다
  • 다중 프로젝트 관리를 사용하는 경우 git archive를 사용하여 관련 파일을 가져올 수 있습니다

물론 모든 방법에는 함정이 있다는 것은 의심의 여지가 없습니다.

给我你的怀抱

안녕하세요. 이런 복잡한 버전 시나리오는 Gitflow에 적합합니다. Gitflow로 직접 이동하여 알아볼 수 있습니다. 링크는 다음과 같습니다: http://nvie.com/posts/a-successful-git-branching-model/

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿