내 코드 저장소의 최신 개정판이 손상되어 내 앱이 불안정 해졌습니다. 이전 버전으로 되돌리고 싶습니다.
그러나 작업 사본에 단순히 '복귀'를 사용하고 싶지 않습니다. 실제로 리포지토리 이전에 헤드 리비전과 여러 리비전을 삭제하여 리포지토리를 이전 리비전으로 '복귀'하여 헤드 리비전이됩니다. 내가 어떻게 할 것인지 아는 사람 있습니까?
내 코드 저장소의 최신 개정판이 손상되어 내 앱이 불안정 해졌습니다. 이전 버전으로 되돌리고 싶습니다.
그러나 작업 사본에 단순히 '복귀'를 사용하고 싶지 않습니다. 실제로 리포지토리 이전에 헤드 리비전과 여러 리비전을 삭제하여 리포지토리를 이전 리비전으로 '복귀'하여 헤드 리비전이됩니다. 내가 어떻게 할 것인지 아는 사람 있습니까?
답변:
이 링크가 도움이 될 수 있습니다.
http://www.sampablokuper.com/2009/03/27/svn-revert-to-revision/
인용문:
작업 복사본 전체를 롤백한다고 가정하면 작업 복사본 내 최상위 디렉토리로 변경하십시오.
svn revert
작업 복사본의 파일을 마지막 커밋 / 체크 아웃 상태로 되돌리려면 실행 합니다.
svn status -v
작업 복사본이 현재 어떤 개정 번호에 해당하는지 확인 하려면 실행 합니다 (목록에서 가장 높은 개정 번호 임svn status -v
).실행
svn merge -rXX:YY
어디XX
이전 단계에서 얻을 수이고YY
당신이 되돌리려 개정의 수입니다.끝난! 이에 대한 가능한 예외는 수정본
YY
이 원래 만들어 졌을 때 존재하지 않았던 작업 복사본의 파일 이 여전히 존재한다는 것입니다. 기본적으로 svn은 항목을 제거하지 않기 때문입니다. 당신이 그들을 제거하려면, 그들svn del [filename]
각각에 실행 합니다.잘 했어! 이제 모든 중간 편집이 수행되지 않은 것처럼 작업 복사본으로 재생하십시오. 노력할 준비가되면 평소처럼 svn commit을 사용하십시오!
svn merge -rXX:YY .
는 현재 디렉토리를 참조하기 위해 줄 끝에 점을 두어야합니다. TortoiseSVN에는 리버스 병합 옵션이 있습니다.
이것은 나를 위해 일했습니다. HEAD로 1234 개정판이 있고 마지막 3 개의 커밋을 되돌리려면 다음을 수행하십시오.
svnadmin create newrepo
svnadmin dump -r 0:1231 repo | svnadmin load newrepo
mv repo oldrepo
mv newrepo repo
나는 이것이 오래된 질문이라는 것을 알고 있지만 Windows / TortoiseSVN 으로이 작업을 수행하는 방법을 찾았습니다.
의견에서 제안한 것처럼 개정을 "삭제"할 수 없지만 되돌릴 수있는 개정과 동일한 최신 개정을 작성하면됩니다.
그런 다음 체크 아웃 한 다른 모든 사람에게 가서 업데이트하도록하고 새 파일을 제거해야합니다.
또한 모든 사람이 해당 개정판이 무엇인지 알고 잠재적으로 설명을 업데이트해야합니다.
이 목적으로 덤프 /로드를 사용할 수 있습니다.
svnsync를 사용하여 일부 버전으로 백업 할 수도 있습니다.
큰 저장소가 있으면 시간이 걸립니다.
나를 위해 (VisualSVN, 30-HEAD) 다음과 같이 작동합니다.
델 C : \ Repositories \ MyRepo \ revs \ 0 \ 30 델 C : \ Repositories \ MyRepo \ revs \ 0 \ 29 델 C : \ Repositories \ MyRepo \ revs \ 0 \ 28 델 C : \ Repositories \ MyRepo \ revprops \ 0 \ 30 델 C : \ Repositories \ MyRepo \ revprops \ 0 \ 29 델 C : \ Repositories \ MyRepo \ revprops \ 0 \ 28 에코 27> C : \ Repositories \ MyRepo \ db \ current
터미널로 이동하여 svn 담당자로 이동하십시오.
svn update -r "복귀하려는 개정 번호"