커밋 쌍 중 하나만 사용해야합니다. git을 사용하고 있다면 다음과 같이 사용합니다 :Mercurial에서 커밋을 스쿼시 할 수 있습니까?
그런 다음 스쿼시합니다.
나는 그것을 수은으로 할 수 있습니까? 그렇다면 어떻게?
커밋 쌍 중 하나만 사용해야합니다. git을 사용하고 있다면 다음과 같이 사용합니다 :Mercurial에서 커밋을 스쿼시 할 수 있습니까?
그런 다음 스쿼시합니다.
나는 그것을 수은으로 할 수 있습니까? 그렇다면 어떻게?
예, 확장자가없는 수은을 사용하면 Concatenating Changesets을 사용할 수 있습니다. 당신이 확장 기능을 사용하려면
다른 방법으로 당신은 사용할 수 있습니다
그래, 난 일반적인 질문에 대한 내 의견에 내가 좋아하는 속임수 질문 중에서 그 대답을 낚았 어. 나는 그것이 당신 대답이라고 생각합니다. –
접기 확장 프로그램은 설치하기 쉽고 사용하기 쉽고 정확하게 찾고자했습니다! – MattGWagner
작은 쪽 메모 : Histedit 확장은 Mercurial 2.3 이상과 함께 배포됩니다. 방금 활성화해야합니다. – Paidhi
내가 제일 좋아하는 hg strip --keep
명령 Collapse Extension
내 일상 업무 중 많은 작은 커밋을 할 좋아하기 때문에 그것은, 나를 위해 가장 빠르고 가장 편안한 방법입니다
)주 1 : 내장 된 확장 mq
필요 strip
을 사용할 수 .
참고 2 : 좋아하는 Git/Mercurial 클라이언트 (SmartGit/Hg)는 strip
동안 기본값으로 --keep
매개 변수를 추가합니다. 무엇보다 편리합니다 : join commits
이라는 옵션을 제공합니다 :]
hg 스트립에 대한 전체 명령은 다음과 같습니다. 'hg strip --keep --rev [rev]' 여기서 'rev'는 마지막 하나를 스쿼시하고 싶은 첫 번째 커밋의 개정판 번호입니다. –
@NicolasForney 정확하게 --rev는 선택 사항입니다. 전체 명령은'hg strip --keep [rev]' –
입니다. 3.3.3에서 나를 위해 :'hg help strip'은' hg strip [-k] [-f] [-n] [-B bookmark] [-r] REV ...'그리고 개정을 생략하면'abort : 빈 리비전 세트 '가 생깁니다. –
Rebase extension은 매력처럼 작동했습니다. 2 커밋을 스쿼시하려면 :
$ hg rebase --dest .~2 --base . --collapse
점은 현재 개정판의 바로 가기입니다.
$ hg rebase --dest {destination branch (e.g. master)} --base . --collapse
을이 작동하는 방법 : 당신이 나뭇 가지에 몇 커밋이 하나에 모두 붕괴 할 때
그것은 심지어 쉽게
( http://mercurial-scm.org/wiki/RebaseExtension#Collapsing에서)이 답변을 읽는다면 다른 모든 것을 잊어 버릴 수 있습니다. 이온 이 답에 언급되어 있고 evolve extension의
fold
명령을 사용하십시오.
evolve
은 안전한 변경 가능 기록을 유지하는 데 도움이되는 수은의 확장이며, 아직 실험 중입니다. repo에서 복제하여 이것을 .hgrc에 추가하여 사용할 수 있습니다.
[extensions]
evolve = ~/evolve/hgext/evolve.py
홈 디렉토리에 evolve repo를 복제했다고 가정합니다. 이제 너는 잘하게된다. hg help fold
으로도 도움을받을 수 있습니다.Fold Command
당신은 파손되지 않은 커밋의 선형 체인을 배/스쿼시
fold
말한다. 어떤 폴드가 무엇인지는 모든 changesets의 변경 사항을 포함하는 새로운 changeset를 생성하고 모든 커밋을 쓸모없는 것으로 표시합니다. docs에서 자세한 내용을 확인할 수 있습니다. 이제 다음과 같은 기록이 있다고 가정합니다.
a -> b -> c -> d -> e -> f -> g
당신은 e
, f
및 g
스쿼시 싶습니다. 당신은 h
모든 세 개의 커밋 e
, f
및 g
변경 사항을 포함하는 변경 집합입니다 결과는
a -> b -> c -> d -> h
될 것
hg up g
hg fold -r e
할 수 있습니다.
역사의 중간에서 변경 사항을 접을 수도 있습니다. 즉, 팁이 포함 된 체인을 선택할 필요는 없습니다. b
, c
및 d
을 접으려고한다고 가정합니다. 당신은
hg up d
hg fold -r b
hg evolve --all
이것은 i
이 b
, c
, d
및 j
의 접힌 변경 집합이 h
와 같은 변경 집합입니다
a -> i -> j
가 발생합니다 할 수 있습니다. Evolve user guide 반드시 읽어야합니다.
rebase 커버가 확장 기능의 대부분을 사용하고있는 것처럼 보입니다. 물론이 질문에서 요청되는 케이스도 있습니다. 이 확장 기능의 킬러 기능은 당신이 대체하는 개정판을 숨기고 (삭제하는 것이 아니라) rebase의'--keep' 옵션이 이것을 다루고 있습니다. (개정판을 비밀로 표시하거나, 결과). 일련의 두 rebase 명령을 사용하여 다른 개정 사이에서 개정을 이동할 수도 있습니다. –
... 더하기, 만약 당신이 정말로 복잡한 일을하고 있다면, 항상 로컬 repo를 복제하여 백업으로 사용할 수 있습니다. 얼마나 희귀 한가 (잘하면!), 완전히 새로운 확장 기능을 사용하는 방법을 배우는 것보다 노력이 적습니다. –
@ Ry4an : 고마워, (단어의 다른 선택) 통지하지 않았다. –
그래, 그 질문을 좀 더 분명히했기 때문에 잠시 그걸 발견했다. –