힘내에서 나는 이것을 할 수있다 :
1. 새로운 기능에 대한 작업을 시작하십시오. $ git co -b newfeature-123 # (로컬 기능 개발 지점) 몇 가지 커밋을 수행하십시오 (M, N, O) 마스터 A --- B --- C \ 새로운 기능 -123 M --- N --- O 2. 업스트림 마스터에서 새로운 변경 사항을 가져옵니다. git pull (ff 커밋으로 업데이트 된 마스터) 마스터 A --- B --- C --- D --- E --- F \ 새로운 기능 -123 M --- N --- O 3. 새로운 기능을 갖도록 마스터를 리베이스 해제 최신 업스트림 변경에 대비하여 개발할 수 있습니다. (newfeature-123에서) $ git rebase 마스터 마스터 A --- B --- C --- D --- E --- F \ 새로운 기능 -123 M --- N --- O
Mercurial에서 동일한 작업을 수행하는 방법을 알고 싶습니다. 웹에서 답변을 찾아 보았지만 찾을 수있는 최선은 다음과 같습니다. git rebase-hg do it
그 링크는 2 가지 예를 제공합니다 :
1. 나는 이것을 인정할 것입니다 :
hg -CF hg 지점 -f newfeature-123 HG 이식 -a -b newfeature-123
pre-rebase MNO를 병합되지 않은 헤드로 남겨두고 업데이트 된 메인 라인에서 분기되는 것을 나타내는 3 개의 새로운 커밋 M ', N', O '을 생성한다는 점을 제외하고는 나쁘지 않습니다.
기본적으로 문제는 내가 이것으로 끝내는 것입니다.
마스터 A --- B --- C --- D --- E --- F \ \ newfeature-123 \ M '--- N'--- O ' \ 새로운 기능 -123 M --- N --- O
삭제해야 할 로컬의 원치 않는 커밋을 남겨두기 때문에 좋지 않습니다.
- 동일한 링크의 다른 옵션은
hg qimport -r M : O hg qpop -a H를 위로 hg 지점 newfeature-123 hg qpush -a hg qdel -r qbase : qtip
그리고 이것은 원하는 그래프를 만듭니다 :
마스터 A --- B --- C --- D --- E --- F \ 새로운 기능 -123 M --- N --- O
그러나이 명령들 (모두 6 개)은 훨씬 더 복잡해 보입니다.
$ git rebase 마스터
이것이 Hg에서 유일하게 동등한 지 또는 Git과 같은 간단한 다른 방법이 있는지 알고 싶습니다.
git reflog
가비지 수집을 할 때까지 완전히 사라지지 않습니다. 당신이 reflog를 사용할 필요가 없도록 지명 된 브랜치에 그것들을 유지하려면git branch feature-123_original
rebasing하기 전에 수행하십시오 .