IT TIP

Mercurial에서 커밋을 어떻게 삭제합니까?

itqueen 2021. 1. 7. 20:13
반응형

Mercurial에서 커밋을 어떻게 삭제합니까?


Mercurial 커밋을 저장소에 입력하지 않은 것처럼 완전히 삭제하고 이전 커밋으로 돌아가고 싶습니다.

이것이 가능한가?


마지막 커밋이고 아무데도 푸시하지 않았다면 rollback. 그렇지 않으면 아닙니다. 별로. 비밀번호를 변경할 시간입니다.

편집 : 이전 버전에서 복제하고 유지하려는 변경 사항을 병합 할 수 있다는 지적이 있습니다. 제어 할 수없는 리포지토리에 푸시하지 않은 경우에도 마찬가지입니다. 일단 푸시하면 데이터를 되찾기가 매우 어려울 수 있습니다.


커밋에 대한 mq 정보를 제거 할 수 있습니다.

  • 이를 위해서는 File-> Settings-> Extensions로 이동해야합니다.
  • mq를 확인하고 GUI를 다시 시작하십시오.
  • 그 후 불필요한 커밋과 ModifyHistory-> Strip을 마우스 오른쪽 버튼으로 클릭하십시오.

히스토리를 편집하려면 Histedit Extension 확장을 사용합니다 .

 hg histedit 45:c3a3a271d11c

그러나 이것은 아직 커밋을 공용 저장소에 푸시하지 않았거나 공용 저장소를 소유하거나 모든 복제본을 설명 할 수있는 상황에서만 의미가 있음을 명심하십시오. 다음과 같은 오류가 발생하는 경우 :

abort: can't rebase immutable changeset 43ab8134e7af

이는 Mecurial이 이것이 이미 푸시 된 공개 변경 집합 ( 단계 참조 ) 이라고 생각한다는 것을 의미 합니다. draft다시 수행 하도록 강제 할 수 있습니다 .

hg phase -f -d 45:c3a3a271d11c

나는 이것을 꽤 자주 접한다. 커밋을 한 다음 당겨서 밀어냅니다. 그러나 새로 만든 커밋을 불필요하게 만드는 무언가가 들어옵니다. 평야 hg rollback는 당김을 취소하기 때문에 충분하지 않습니다 ...

이것은 할 일입니다 :

hg strip <rev>

변경 세트를 어디에도 푸시하지 않으면 일이 고통스럽지 않습니다.


"hg backout"을 사용하여 기본적으로 역 병합을 수행 할 수 있습니다. 모든 옵션은 무료로 사용할 수있는 책 "Mercurial : The Definitive Guide"에서 설명합니다.

http://hgbook.red-bean.com/read/finding-and-fixing-mistakes.html


두 개 이상의 커밋이거나 이미 다른 곳에 푸시 한 경우 리포지토리를 복제하고 복제해야하는 마지막 변경 집합을 지정할 수 있습니다.

이 작업을 수행하는 방법은 여기에서 내 대답을 참조하십시오.
Mercurial : 지루한 기록 수정

로컬로만 커밋하고 푸시하지 않은 경우 로컬로 클론을 생성하면됩니다 (내 링크에 설명 됨).

이미 일부 원격 저장소로 푸시 한 경우 해당 저장소를 복제본으로 바꿔야합니다.
물론 이것은 당신이 이것을 할 수 있는지 (또는 허용되는지) 달려 있습니다.


거북이를 사용하는 경우 히스토리 수정> 스트립 ...을 사용할 수 있습니다.


예. 내가 착각하지 않는 한 v2.3 (rel. 2012/08/01)부터 HisteditExtension drop 명령 과 함께 사용하여 커밋 을 삭제 strip하거나 backout변경 사항을 제거 할 수 있습니다.

기능에 대한 간단한 Google 검색 : https://www.google.com/webhp#q=histedit+drop

참조 URL : https://stackoverflow.com/questions/5084915/how-do-you-delete-a-commit-in-mercurial

반응형