2017-10-06 6 views
3

내 상황 내 기능 지점이 더 많은이분기가 커밋을 많이하는 경우 제대로 리베이스 할 수 있습니까?

enter image description here

그 동안에도 내 기능이 지점에 영향을 저지른 된 버그 수정 커밋 것을 제외하고이이 비슷합니다. 이것이 필자의 지형지 물을 마스터에 리베이스하기를 원하는 이유입니다.

내가 혼란에 빠졌던 git rebase master (필자의 지형지 물에 올라 있음)으로이 작업을 시도했습니다. 필자의 지형지 물은 커밋 수가 많으므로 리베이스가 오래 걸리고 리스터 프로세스 및 모든 충돌에서 이전 커밋과 그로 인한 모든 사항을 잃어 버립니다.

이 상황에서 어떻게 올바르게 수행 할 수 있습니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

'자식이 master'가 feature' 분기와'sub_feature'의 branc'사이의 관계를 파괴 할 수있는 리베이스 featuresub-feature의 이력을 단순화하고, 마스터의 단순화 버전을 리베이스 h. 'feature' 브랜치를'master' 브랜치로 병합 한 다음'feature' 브랜치를 머지 커밋으로 빨리 감는 것이 좋습니다. 이 방법은 커밋 내역을 명확하게 유지할 수 있습니다. –

답변

0

, 당신은 어떻게 든 각 마스터의 상부에 커밋 다시 재생, 또한 sub-feature -> feature 병합을 유지하기 위해 몇 가지 추가 작업을 수행해야합니다.

나는 그렇게하지 않을 것을 제안합니다.당신의 feature 지점에 bugfix을 통합하려면, 당신은 할 수 :

git checkout feature 
git merge master 

이 그것을 할 수있는 가장 정직하고 git -ish 방법이 될 것이다 :

  • 병합 마스터 (의 버그 수정과) 기능에

    git checkout feature 
    git cherry-pick bugFix 
    
    :

  • bugfix이 기능에 커밋 체리 - 선택 16,

    는 그것을 할 수있는 가장 깨끗한 방법이 아니다, 그러나 확실히 당신이에 의해 수정 된 파일에 대한 충돌을 얻는 경우에 당신은 masterfeature을 병합 할 때 bugFix 두 가지에 존재 기억해야 할 수도 있습니다, 나중에
    작동 bugfix

  • 먼저

+0

나는 병합과 함께 갔다. 이것은 더 이상의 문제없이 작동했습니다. 마지막으로 피쳐 브랜치를 마스터로 병합합니다. 나는 아직도 자식을 사용할 필요가있다 .... –

0

'잃어버린 개요 유지'는 Git과 함께 사용하는 UI의 문제와 유사합니다. 많은 사람들이 터미널을 좋아하고 실제로 매우 강력하지만 자식은 직관적 인 계획이 아니며 터미널이 악화시킵니다.

필자는 TortoiseGit을 사용하여 더 큰 리베이스를 수행했으며, 여러 번의 병합 충돌로 인해 겉으로보기에는 적절한 수준의 좌절감 만 유도되었습니다.

새로운 git 도구를 배우는 것은 당연히이 문제에 대한 성가신 해결책입니다. 그런 다음 텍스트 기반 콘솔 대신 적절한 사용자 인터페이스를 추천합니다. 터미널이 사라지는 것 같지 않습니다!

두 번째 옵션 당신이 좋은 선형 자식의 역사를 원한다면 아마 좋은 선택하지 않은, featuremaster을 병합하는 것입니다. 당신이 전체 역사를 리베이스하려면