2014-01-24 3 views
4

다음은 a success Git branching model (일명 git-flow)입니다.git - dev와 master에 핫픽스를 병합하면 분기가 발생합니다.

핫픽스 분기 완료 섹션의 지침에 따라 핫픽스를 수행했습니다.

내가 만든 핫픽스 지점 마스터 떨어져 :

다음
> git checkout master 
> git merge --no-ff hotfix 

수동 디바이스로 다시 병합 :

> git checkout -b hotfix upstream/master 

어떤 일을 했습니까 수동 마스터로 합병 :

> git checkout dev 
> git merge --no-ff hotfix 

dev에 대해 더 많은 작업을했습니다. 모든 것이 잘 보였다. 그런데 dev에 병합하려고 시도했지만 그럴 수 없었습니다. 그것은 병합을 표시

> git checkout master 
> git merge --ff-only dev 
fatal: Not possible to fast-forward, aborting. 

핫픽스에서 차이가 커밋합니다.

이 프로세스를 따르면 나는 공통의 기록을 유지한다고 가정했습니다. 나는 무엇을 잘못 했는가?

+0

왜 개발자를 빨리 감기로 마스터에 병합 하시겠습니까? –

+0

@alexeyten, 나는 분기점이 안정된 지점에 도달 할 때 [문서] (http://nvie.com/posts/a-successful-git-branching-model/) *에서 병합 커밋을 피하는 것으로 생각했다. 출시 될 준비가되었습니다. 변경 사항은 모두 마스터로 병합되어야합니다 ** 어떻게 든 *** –

답변

4

당신은 너무 일반적인 경우로 시작 hotfix을 생성하여 역사의 토폴로지에 대한 세부 사항을 제공하지 않았다가

$ git checkout -b hotfix upstream/master 
$ git lola 
* 81a514a (dev) Stupendous feature 
* cb4d5e6 Great feature 
* d4a7906 Cool feature 
| * 39e449a (HEAD, upstream/master, hotfix) v0.2 
|/ 
* 264ddbc (master) v0.1

참고를 제공합니다 git lola은 비표준이지만 매우 유용 별명입니다. master-hotfix 병합

상황이 선로를 벗어가는 곳

* 567f066 (HEAD, master) Merge branch 'hotfix' 
|\ 
| * 1b1b6e3 (hotfix) Fix nasty bug 
| * 39e449a (upstream/master) v0.2 
|/ 
| * 81a514a (dev) Stupendous feature 
| * cb4d5e6 Great feature 
| * d4a7906 Cool feature 
|/ 
* 264ddbc v0.1

dev 별도로 hotfix입니다 병합 제공합니다. 이 시점에서

* 36aa1c8 (HEAD, dev) Merge branch 'hotfix' into dev 
|\ 
* | 81a514a Stupendous feature 
* | cb4d5e6 Great feature 
* | d4a7906 Cool feature 
| | * 567f066 (master) Merge branch 'hotfix' 
| | |\ 
| |//
|/|/
| |/ 
| * 1b1b6e3 (hotfix) Fix nasty bug 
| * 39e449a (upstream/master) v0.2 
|/ 
* 264ddbc v0.1

, masterdev하지만 형제의 직접적인 조상이 아니다.

dev에 대한 커밋을 추가하면 master은 위대한 삼촌이됩니다.

* d89aa74 (HEAD, dev) Jason does it again 
* a4dd5bf Jason saves the day 
* 36aa1c8 Merge branch 'hotfix' into dev 
|\ 
* | 81a514a Stupendous feature 
* | cb4d5e6 Great feature 
* | d4a7906 Cool feature 
| | * 567f066 (master) Merge branch 'hotfix' 
| | |\ 
| |//
|/|/
| |/ 
| * 1b1b6e3 (hotfix) Fix nasty bug 
| * 39e449a (upstream/master) v0.2 
|/ 
* 264ddbc v0.1

dev이 기능 지점의 방법으로 master에 도달 것을 기억하고 --no-ff 병합을 통해. 아마도 release-1.0은 귀하의 핫픽스로 시작하여 다른 버그 수정을 얻습니다.

* f0398ba (HEAD, release-1.0) Bugfix for v1.0 
* d89aa74 (dev) Jason does it again 
* a4dd5bf Jason saves the day 
* 36aa1c8 Merge branch 'hotfix' into dev 
|\ 
* | 81a514a Stupendous feature 
* | cb4d5e6 Great feature 
* | d4a7906 Cool feature 
| | * 567f066 (master) Merge branch 'hotfix' 
| | |\ 
| |//
|/|/
| |/ 
| * 1b1b6e3 (hotfix) Fix nasty bug 
| * 39e449a (upstream/master) v0.2 
|/ 
* 264ddbc v0.1

는 버튼까지 분리, 이것은 물론

$ git merge --no-ff -m "v1.0" release-1.0 
$ git lola 
* 5a384c8 (HEAD, master) v1.0 
|\ 
| * f0398ba (release-1.0) Bugfix for v1.0 
| * d89aa74 (dev) Jason does it again 
| * a4dd5bf Jason saves the day 
| * 36aa1c8 Merge branch 'hotfix' into dev 
| |\ 
| * | 81a514a Stupendous feature 
| * | cb4d5e6 Great feature 
| * | d4a7906 Cool feature 
* | | 567f066 Merge branch 'hotfix' 
|\ \ \ 
| |//
|/|/
| |/ 
| * 1b1b6e3 (hotfix) Fix nasty bug 
| * 39e449a (upstream/master) v0.2 
|/ 
* 264ddbc v0.1

master로 돌아갑니다 있다고 가정하면, 당신을위한 정확한 수정은 역사의 특성에 따라 달라집니다.

+0

* 구체적인 내용 *이 필요합니까? 설명에 감사하지만 아직 내 질문에 답할 수 없습니다. 새로운 것을 물어볼 수있게, 어떻게해야합니까? –

+0

@JasonMcCreary 꽤 가까울 수도 있습니다. 'master '로의 병합은'--no-ff'이지만, 당신의 질문은'--ff-only'로 시도한 것을 기억하십시오. 완전히 일반적인 모델에서,'dev'는'release- * '와 합쳐져'master'에 합병됩니다. 내 대답의 마지막 두 섹션을 참조하십시오. 그래도 여전히 당신의 질문에 답이되지 않는다면, 대답에'git lola'의 관련 출력을 붙여 넣는 것을 고려해보십시오. –

+0

어쩌면 나는 * dev *에서 * master * wrong로 나의 병합을하고있다. 분기 간 병합 할 때 병합 커밋을 피하고 싶다고 생각했습니다. 핫픽스와 같은 경우 정리 기록을 유지합니다. 그러므로'--ff-only'. git-flow에서 병합 커밋을 원한다고 말하는거야? –

관련 문제