[mercurial] 머큐리얼 실행 취소 마지막 커밋

Mercurial에서 실수로 커밋 된 (변경되지 않은) 변경을 어떻게 취소 할 수 있습니까?

가능하면 TortoiseHg를 사용하는 것이 좋습니다.

최신 정보

구체적인 경우에는 변경 세트를 푸시하지 않았습니다. 그런 다음 서버에서 가져 와서 업데이트했습니다. 이 새로운 업데이트를 통해 마지막 커밋이 더 이상 사용되지 않으며 동기화하고 싶지 않다고 결정했습니다. 그래서 그것은 hg rollback내가 찾고있는 것이 아닌 것 같습니다 . 내 커밋 대신 풀을 롤백하기 때문입니다.



답변

한 가지 방법은 hg rollback (2013 년 8 월 Hg2.7부터 사용 중단)

마지막 커밋에서 실수를 수정 하는 hg commit --amend대신 사용하십시오 rollback.

저장소에서 마지막 트랜잭션을 롤백하십시오.

커밋 또는 병합 할 때 Mercurial은 변경 세트 항목을 마지막에 추가합니다 .
Mercurial은 터치 한 각 파일 이름과 트랜잭션 이전 길이의 트랜잭션 로그를 유지합니다. 중단되면 각 파일을 이전 길이로 절단합니다. 이 단순성은 revlogs를 추가 전용 으로 만드는 이점 중 하나 입니다. 트랜잭션 저널은 실행 취소 조작도 허용합니다.

TortoiseHg 복구 섹션을 참조하십시오 .

대체 텍스트

이 스레드는 또한 차이 사이의 자세한 사항 hg rollbackhg strip:
(쓴 마틴 가이슬러 또한 SO에 기여)

  • hg rollback‘는 마지막 거래를 제거합니다. 트랜잭션은 데이터베이스에서 종종 발견되는 개념입니다. Mercurial에서는 commit, push, pull과 같은 특정 작업이 실행될 때 트랜잭션을 시작합니다
    . 작업이 성공적으로 완료되면 트랜잭션이 완료된 것으로 표시됩니다. 오류가 발생하면 트랜잭션이 “롤백”되고 리포지토리는 이전과 동일한 상태로 유지됩니다.
    ‘hg rollback’을 사용하여 롤백을 수동으로 트리거 할 수 있습니다. 마지막 트랜잭션 명령이 취소됩니다. pull 명령이 10 개의 새로운 변경 세트를 다른 브랜치의 저장소로 가져 오면 ‘ hg rollback‘가 모든 변경 세트를 제거합니다. 참고 : 트랜잭션을 롤백 할 때 백업없습니다 !

  • hg strip‘는 변경 집합과 모든 하위 항목을 제거합니다. 변경 세트는 번들로 저장되므로 다시 필요할 경우 다시 적용 할 수 있습니다.

ForeverWintr 은 의견에서 제안합니다 (2016 년, 5 년 후)

먼저 파일을 잊어 버려서 ‘커밋 해제’할 수 hg forget filea; hg commit --amend있지만 , 예를 들어 직관적이지 않은 것 같습니다.
hg strip --keep아마도 현대 hg에 대한 더 나은 솔루션 일 것입니다.


답변

hg strip 리포지토리에서 개정판 및 모든 하위 항목을 완전히 제거합니다.

strip을 사용하려면 .hgrc (또는 mercurial.ini)에 다음 줄을 추가하여 MqExtension 을 설치해야합니다 .

[extensions]
mq =

TortoiseHg에서 스트립 명령은 워크 벤치에서 사용할 수 있습니다. 개정을 마우스 오른쪽 버튼으로 클릭하고 ‘이력 수정’-> ‘스트립’을 선택하십시오.

strip저장소의 히스토리를 변경 하므로 아직 다른 사용자와 공유하지 않은 개정판에서만 사용해야합니다. 수은 2.1 이상을 사용하는 경우 단계 를 사용하여이 정보를 추적 할 수 있습니다 . 커밋이 아직 초안 단계에있는 경우 다른 리포지토리와 공유되지 않았으므로 안전하게 제거 할 수 있습니다. (이 점을 지적한 Zasurus에게 감사한다).


답변

롤백 할 수 없으므로 해당 커밋을 끌어 올 때 얻은 새 헤드에 병합해야합니다. 당신이 한 일을 원하지 않는다면 이 팁 을 사용하여 쉽게 할 수 있습니다 .

따라서 머리 를 당겨서 업데이트 하면 다음과 같이 할 수 있습니다.

hg --config ui.merge=internal:local merge

현재 체크 아웃 된 개정판의 모든 변경 사항을 유지하고 체크 아웃되지 않은 개정판 (더 이상 원하지 않는 것으로 작성된 개정판)의 변경 사항은 유지하지 않습니다.

이것은 역사를 정확하고 완전하게 유지하기 때문에 좋은 방법입니다. 2 년 후 누군가가 당신이 끌어 낸 것에 버그를 발견하면, 당신은 (사용하지 않았지만 저장 한) 같은 구현을보고 “오, 내가 옳았다”고 할 수 있습니다. 🙂


답변

hg rollback 당신이 원하는 것입니다.

TortoiseHg hg rollback에서 커밋 대화 상자에서 수행됩니다. 커밋 대화 상자를 열고 “실행 취소”를 선택하십시오.

대체 텍스트


답변

TortoiseHg Workbench 4.4.1 (07.2018)의 현재 버전에서는 Repository– 를 사용할 수 있습니다 Rollback/undo....
여기에 이미지 설명을 입력하십시오


답변

해결 방법.

서버로 푸시하지 않으면 리포지토리 폴더에서 새 폴더로 복제하거나 다른 폴더로 씻어 내고 (모든 파일 삭제) 새 폴더로 복제합니다.


답변

작업 공간을 가져 와서 업데이트 한 후 제거하고 변경하려는 변경 세트를 마우스 오른쪽 버튼으로 클릭 한 다음 수정 내역-> 스트립을 클릭하면 변경 세트가 제거되고 기본 팁을 가리 킵니다.