이전에 주어진 답변을 반복하여 약간의 공간을 사용하는 것은 죄송합니다. 그러나 이것은 항상 문제가됩니다.
로컬 파일을 최신 개정판 인 854로 업데이트했다고 가정 해 보겠습니다. 그런 다음 이전 개정판 (몇몇 이전의 파일 버전, 개정판 851)을 원합니다.
복사가 작동합니다 :
svn copy -r 851 svn+ssh://<repository URL>/l3toks.dtx ./l3toks.dtx
.. 그러나 repo URL에 대한 grepping 수 없습니다 :)
업데이트가 작동하는 것 같습니다.
svn up -r 851 ./l3toks.dtx
...하지만 로컬 사본을 "새로 체크 아웃 한"또는 "온라인 개정과 동일"으로 표시합니다 (예 : Tortoise / RabbitVCS에서 녹색 확인 표시가 나타남) svn ci -m "rolled back to r 851"
. subversion
실행 파일은 로컬 변경 사항을 알지 못하며 온라인 저장소에 아무것도 업로드하지 않아도됩니다.
이미 대답했듯이 리버스 병합은 작동하지만이 경우 바로 가기 구문에 의존해서는 안됩니다. 그러나 구체적으로 말하면 :
svn merge -r HEAD:851 l3toks.dtx
--- Reverse-merging r854 through r852 into 'l3toks.dtx':
U l3toks.dtx
나는 인정해야한다-나는 문장을 이해하지 못할 것이다. " r854를 통해 r854를 파일로 병합 " "의미 만이 파일의 r851을 가지고, 당신은 이전에 로컬 가졌던 덮어 쓰기 - 그리고 그것은 최신 온라인 버전과 다른 것으로 표시되기 때문에, 온라인에서 새로운 '롤백'개정판으로 다시 확인할 수 있지만 다음과 같이 생각합니다. :)
이 후, 우리는 사용할 수 있습니다 svn diff
로컬로 올바른 개정판을 가져 오면 빠른 확인을 위해 . 또한 파일은 Tortoise / RabbitVCS에 빨간색 느낌표 (즉, 최신 커밋 된 버전과 다른)로 표시되므로 svn ci -m "rolled back to r 851"
이번에는 실행할 수 있습니다.
또한 리버스 병합 후 마지막으로 마음이 바뀌면 ( 즉, 어쨌든 최신 HEAD 개정판을 계속 사용하고 싶다면 854-로컬로 851로 롤백했지만 아직 롤백을 커밋하지 않은 후) )를 사용하면 안됩니다 svn up
. 왜냐하면 이미 " 개정 854에서 " "에 . 대신 svn revert --recursive .
또는 유사한 것을 사용하십시오 ...
건배!
참조 : Subversion을 사용하여 변경 사항을 롤백하는 방법-Jacob Wright – Flex, AIR, PHP 등
편집 : ... 그리고 분명히와 동일한 효과를 svn merge -r HEAD:851 l3toks.dtx
얻을 수 있습니다 :
svn export -r 851 l3toks.dtx
A l3toks.dtx
Export complete.