2010-11-30 2 views
1

내가 현재 자식에 다음을 말해봐 : 힘내 : 커밋 단일 개체에 지점을 수렴

master 
    O 
    | 
    o <-- commit objects on master branch 
    | 
    o -- O <-- new branch: featureX 
     | 
     o <-- commit objects on the featureX 
     | 
     o 

그래서 나는 master 지점에서 시작하고 두 커밋 후에, 나는 featureX에 분기.

지금, featureX 2 커밋 후에, 나는 master으로 수렴하고 featureX에 마지막 커밋에서 master에 대한 작업을 계속합니다.

내가 mastermasterfeatureX하지만 featureX에서 수행하는 모든 커밋을 전송 사이의 파일을 병합하고 마지막에서 master 작업이이 featureX에서 수행 된 커밋 계속하지 않으려는 것을 의미한다. 기본적으로

, 이런 식으로 뭔가 :

master 
    O 
    | 
    o <-- commit objects on master branch 
    | 
    o -- O <-- new branch: featureX 
     | 
     o <-- commit objects on the featureX 
     | 
    o -- o <-- move everything back to master 
    | 
    o <--continue working on master 

나는이하기 위해 따라야 할 단계는 무엇입니까?

모든 파일을 병합하고 싶지 않다는 점에 유의하십시오. master에있는 내용을 덮어 씁니다. featureX에서 작업하는 동안 master에서 수행 된 작업이 없다고 가정 할 수도 있습니다. 다른 작업 featureX에 대한 분기 이후 마스터에서 수행되지 않은 경우

+0

당신이 얻은 답을 설명하는 중요한 점은 아스키 미술사는 그렇게 그리지는 않았지만 엄격하게 선형이라는 것입니다. 커밋은 브랜치에 대해 아무 것도 모릅니다. 부모는 누구인지를 알고 있습니다. – Cascabel

답변

4

는 :

git checkout master 
git merge featureX 

이있을 것 "빨리 감기"당신이 원하는 일을해야한다고 병합합니다. 위의 후 다음을 수행 할 수 있습니다.

git branch -d featureX 

이전 분기를 삭제할 수 있습니다.

+2

'git checkout master; git reset featureX'도 작동하고 병합을하지 않을 것입니다. –

+0

'merge'가 파일을 병합하려고하지 않습니까? 'master '에있는 파일을 완전히 덮어 쓰고 싶습니다. –

+3

@Andreas Grech : 두 분기 분기에 파일이 변경되었을 때만 파일을 살펴 봐야합니다. master branch에 대한 커밋이 더 이상 없기 때문에 featureX가 어디에서 왔는지 구분하지 않았습니다. 병합 할 변경 사항이 없으므로 충돌이 없으므로 파일 수준에서 수행 할 작업이 없습니다. 그렉 (Greg)이 말했듯이 마스터 브랜치가 featureX가있는 곳으로 이동하는 것은 빨리 감기가 될 것입니다. 상대적으로 최근의 git을 가지고 있다면 - 마음의 평화를 위해서 - merit --ff-only featureX를 사용하여 병합이 빨리 감기 일 때만 병합이 이루어 지도록 할 수 있습니다. –

관련 문제