Branch - git multi-version이 병렬로 출시되면 여러 프로젝트나 브랜치를 생성해야 합니까?
世界只因有你
世界只因有你 2017-05-02 09:19:04
0
4
1577

Git은 단일 버전 온라인 프로젝트에 매우 성숙하며 프로세스가 매우 명확합니다. 각 이슈에 대한 브랜치를 만든 다음 마스터에 병합하고 태그를 지정합니다.
예를 들어 웹 프로젝트의 경우 1.0.0이 릴리스되고 버그 수정이 포함된 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가 마스터에서 태그되어 출시되었습니다. 다음 마일스톤은 14.10입니다. 많은 사람들이 여러 브랜치를 개발한 후 매일 빌드를 병합하여 매우 좋아 보였습니다.
갑자기 14.04에 수정해야 할 긴급 버그가 있는데, 14.10이 출시되면 몇 달을 기다려서 수정하는 것이 불가능합니다. 14.04 코드는 어디서 확인하나요? 태그에서 체크아웃하더라도 수리가 완료되면 어디에 병합되나요? 마스터로만 병합이 가능하지만 마스터는 14.10이라 릴리즈가 불가능합니다.

복잡한 git 프로세스를 따르는 경우:
14.04가 master에서 태그되어 출시되었습니다. 다음 마일스톤은 14.10입니다. 많은 사람들이 여러 브랜치를 개발한 다음 이를 개발 브랜치에 병합하고 매일 빌드를 출시했습니다.
갑자기 14.04에서 고쳐야 할 긴급 버그가 생겼는데, master에서 hotfix-xxx라는 브랜치를 뽑아서 master에 merge해서 태그를 달고 14.04.1을 출시했습니다. 또한 개발로 병합되었습니다.
14.10이 개발되어 출시 예정이라면, 개발에서 release-14.10이라는 브랜치를 끌어오고 작업이 끝나면 release-14.10을 master에 병합하고 태그를 붙여서 출시합니다. 또한 개발로 병합되어 멋지게 보입니다.
갑자기 14.04에서 수정해야 할 긴급 버그가 있는데 14.04.2를 릴리스해야 하나요? 14.04.1의 코드는 어디서 확인하나요? 태그에서 체크아웃해서 수리가 완료되어도 어디에서 병합되나요? 마스터로만 병합할 수 있지만 마스터는 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/

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