2012-06-04 2 views
2

머큐리얼의 경우 나는 점차적으로 푸시를해야하는 시나리오를 종종 보지만, 다른 사람이이 상황에서 커밋을하면 문제가 발생합니다.의욕적 인 커밋 및 병합

예 :

Mickey does: $ echo "change1" >> a.txt 
Mickey does: $ echo "change2" >> b.txt 
Mickey does: $ echo "change3" >> c.txt 
Mickey does: $ hg commit -m "I am good" a.txt 
Goofy does: $ hg pull -u; echo "change4" >> d.txt; hg commit -m "The Donald change" 

미키 커밋 할 준비가 얻고 다음 HG의 REPO 네 개의 파일 a.txt이, b.txt, c.txt, d.txt을 가지고 있으며, 우리는 두 명의 사용자 미키와 구피가 있다고 가정 밀어 넣기는하지만 병합해야합니다 : 미키가 수행하는 작업 : $ hg pull -u

이제 Mickey에는 b.txt와 c.txt의 두 가지 변경 사항이 있습니다. 그의 c.txt에서의 변화가 복잡하고 지금은 풀 수 없다고 가정합니다. 미키는 어떻게 a.txt와 b.txt의 변경 사항을 c.txt를 커밋하지 않고 커밋하고 푸시 할 수 있습니까?

답변

2

그냥 저지르고 당신이 관심있는 파일 이름을 실행

hg commit a.txt b.txt -m'partial commit' 

그런 다음 평소처럼 밀어 넣습니다.

편집 : Iyou가 복귀, 패치 등의 로컬 변경 사항을 저장 시도하고 원격 변화를 당겨 수, 다음 패치 적용

hg diff > local.patch 
hg revert 
hg pull -u 
patch -p1 < local.patch 
+0

미확인 - 그가 커밋하기 전에 병합해야하는데, 문제는 c.txt가 아직 커밋 될 수 없다는 것입니다. –

+0

제 잘못, 충분히 질문을 읽지 않았습니다 ... 그럼 어떻게해야합니까? 별도의 지점에 변경 사항을 넣거나 (또는 ​​저장소를 복제하는 경우)? – piwi

+0

"너는 되돌아 가야한다"고 생각합니다. 첫 번째 hg diff 후 –

1

귀하의 질문은 나에게 완전히 명확하지 않다가, 경우에 저를 수정하시기 바랍니다 I 너 틀렸어. 미키는 자신의 repo에 무슨

이있다 (A - 변경 a와 미키의 변경 집합, D은 - d와 구피의 변경 집합 변경, w는 - bc와 미키의 작업 복사본 변경) : 이제

-- o --- A --- w 
    \ 
    D 

미키 옵션이 풍부합니다. b 출시 할 준비가, 그래서 그는 즉시 커밋 :

$ hg ci b.txt -m "Finished working on b.txt" 

-- o --- A --- B --- w 
    \ 
    D 

는 이제 c 변경 작업 복사본에 남아 있습니다. 미키는 중간 커밋을 수행합니다.

$ hg ci -m "working on c" 

-- o --- A --- B --- C' --- w 
    \ 
    D 

작업 복사본이 깨끗합니다. 확인하려면 C' 병합에 포함되지 않은 이전 변경 집합에 미키 업데이트는 다음 병합 :

$ hg up B 
$ hg merge D 
$ hg ci -m "Merged with Goofy" 

-- o --- A --- B --- C 
    \   \ 
    D --------- M --- w 

준비가되면 이제 미키 커밋을 C 작업을 계속하고 수정할 수 있습니다 :

$ hg up C 
$ echo "final change" >> c.txt 
$ hg ci --amend -m "Finished working on c.txt" 

여기에서 Mickey가 병합하거나 리베이스 할 수 있습니다 (단, 구피와 병합하면 리베이스가 될 수도 있음).

+0

"--amend"옵션은 본 적이 없으며 HG 2.1.2는이를 인식하지 못합니다. 이것은 새로운 옵션입니까? –

+0

@PeterToft :'--amend'는 약 한 달 전에 [Mercurial 2.2] (http://mercurial.selenic.com/wiki/WhatsNew#Mercurial_2.2_.282012-05-01.29)에 소개되었습니다. 그 효과는 다른 방법으로는 얻을 수 없지만 매우 편리합니다. 이 옵션이 없으면 MQ ('qimport','qrefresh','qfinish')를 사용할 수 있습니다. – Helgi