SVN 커밋을 되 돌리는 방법에 대한 다양한 예를 찾았습니다.
svn merge -r [current_version]:[previous_version] [repository_url]
또는
svn merge -c -[R] .
그러나 둘 다 작동하지 않는 것 같습니다. 나는 그 명령을 시도하고 수동으로 변경된 파일을 확인했습니다.
개정 번호가 1944 인 커밋을 되돌리려면 어떻게해야합니까? 실제 파일을 보지 않고 되돌리기가 완료되었는지 확인하려면 어떻게해야합니까?
답변
두 예제 모두 작동해야하지만
svn merge -r UPREV:LOWREV .
범위 취소
svn merge -c -REV .
단일 개정 실행 취소
이 구문에서-현재 디렉토리가 WC이고 모든 병합 후에 수행 해야하는 것처럼 결과를 커밋합니다.
로그를 보시겠습니까?
답변
TortoiseSVN 클라이언트를 사용하는 경우 로그 표시 대화 상자를 통해 쉽게 수행 할 수 있습니다 .
답변
svn merge -r 1944:1943 .
작업 사본에서 r1944의 변경 사항을 되돌려 야합니다. 그런 다음 diff를 사용하여 작업 복사본의 변경 사항을 검토 할 수 있지만 되돌리기를 저장소에 적용하려면 커밋해야합니다.
답변
먼저 작업 복사본을 1943으로 되돌립니다.
> svn merge -c -1943 .
둘째, 커밋 대상을 확인하십시오.
> svn status
셋째, 버전 1945를 커밋합니다.
> svn commit -m "Fix bad commit."
넷째, 새 로그를보십시오.
> svn log -l 4
------------------------------------------------------------------------
1945 | myname | 2015-04-20 19:20:51 -0700 (Mon, 20 Apr 2015) | 1 line
Fix bad commit.
------------------------------------------------------------------------
1944 | myname | 2015-04-20 19:09:58 -0700 (Mon, 20 Apr 2015) | 1 line
This is the bad commit that I made.
------------------------------------------------------------------------
1943 | myname | 2015-04-20 18:36:45 -0700 (Mon, 20 Apr 2015) | 1 line
This was a good commit.
------------------------------------------------------------------------
답변
개정을 “커밋 해제”하는 것은 불가능하지만 작업 복사본을 버전 1943으로 되돌리고이를 버전 1945로 커밋 할 수 있습니다. 버전 1943과 1945는 동일하며 변경 사항을 효과적으로 되돌립니다.
답변
다음과 같이 드라이 런을 수행합니다. HEAD는 현재 버전이고 PREV는 이전 버전이며 파일 경로 또는 커밋 된 항목은 다음과 같습니다.
svn merge --dry-run -rHEAD:PREV https://example.com/svn/myproject/trunk
드라 이런이 양호 해 보이면 –dry-run없이 명령을 실행하십시오.
개정 변경 사항을 확인한 후 다시 커밋하십시오. 버전 번호를 찾으려면 다음을 시도하십시오.
svn log
답변
F=code.c
REV=123
svn diff -c $REV $F | patch -R -p0 \
&& svn commit -m "undid rev $REV" $F