실수로 "svn 되돌리기"를 복구하는 방법이 있습니까?


95

나는 오늘 아침에 다음을 수행하여 발을 쏠 수 있었다.

  1. 내 프로젝트 변경 작업 시작
  2. 여러 파일을 편집했습니다.
  3. 내 접근 방식이 모두 잘못되었고 다시 시작해야한다는 것을 깨달았습니다.
  4. 내 프로젝트의 최상위 수준으로 cd하고 "svn --recursive revert." 내 로컬 샌드 박스를 변경 전 상태로 복원합니다.
  5. 내 로컬 샌드 박스에 눈에 띄는 다른 많은 변경 사항이 있다는 것을 깨달았을 때 공포에 휩싸 였고 방금 모든 것을 지 웠습니다. (지난 금요일에 svn 서버가 다운되어 체크인을 할 수 없었고 주말 동안 잊어 버렸습니다)

다행히이 경우 금요일에 퇴근하기 전에 "svn diff> temp.txt"를 수행했고 temp.txt 파일이 여전히 내 하드 드라이브에 있었기 때문에 해당 파일을 "패치"에 넣고 복구 할 수있었습니다. 손실 된 변경.

그러나 내 미래의 참조를 위해 (즉, 다음에 같은 바보 같은 실수를 할 때) ... svn에게 "svn 되돌리기"를 실행 취소하도록 지시하는 방법이 있습니까? svn은 로컬 / 체크인되지 않은 diff의 백업을 어디서나 보관합니까?


34
IIRC TortoiseSVN은 되 돌린 파일을 휴지통으로 이동하지만 원래 SVN 명령 줄 클라이언트에는 이러한 뉘앙스가 없습니다.
Dario Solera

1
휴지통에서 파일을 찾을 수 없습니다. 내가 운이 좋지 않습니까?
dalcantara 2012

5
휴지통에 관한 상위 댓글입니다. 그것은 내 하루를 구했습니다!
OrganicPanda

2
내 것도! 정말 고맙습니다. 되 돌린 파일이 내 휴지통에 방금 나타 났으며 복원 할 수 있습니다.
sladda

1
이 휴지통으로 내 뒷면을 구했습니다 !!!
Epirocks

답변:


79

아니요, (절대적으로) 아니요 .

Subversion에 파일을 되돌려 야한다고 말하면 모든 변경 사항이 바람에 의해 사라집니다.

당신의 기억 만이 그들을 되 찾을 수 있습니다.

예외 : 추가 한 새 파일은 "추가됨"상태 만 손실되지만 파일은이 디렉토리에 남아 있으며 상태 만 알 수 없음 ( "?")

플랫폼 / 소프트웨어 예외 : Windows에서 TortoiseSVN을 사용하면 Revert는 먼저 파일을 휴지통으로 보낸 다음 되돌립니다. 휴지통을 파헤쳐 파일을 복구 할 수 있습니다.


10
위의 부록 : 버전 제어는 실제로 파일을 커밋하는 경우에만 도움이됩니다. 작업 복사본을 죽이는 것이 몇 시간의 작업을 죽이는 입장에 있다면, 당신은 충분히 자주 커밋하지 않는 것입니다.
myron-semack

1
동의했습니다 ...이 경우 svn 서버가 다운되었으며, 이것이 커밋되지 않은 변경 사항이 아직 보류중인 이유입니다. : ^ (
Jeremy Friesner

13
예!!! O / S 및 / 또는 IDE에 따라 회복하는 방법이 있습니다. 심장 마비가 발생하기 전에 아래의 다른 답변을 읽으십시오 !!
HDave 2013 년

2
그것은 사실이 아닙니다. 단순한 아니오보다 조금 더 복잡합니다. 복구 도구를 사용하거나 운이 좋으면 파일이 휴지통에 있습니다.
RaphMclee 2014

1
@RalphMclee : 플랫폼 및 svn 클라이언트에 따라 다릅니다. TortoiseSVN은 복구 된 새 파일을 휴지통에 저장합니다. 이것은 단지 예외입니다. 그리고 복구 도구가 파일의 변경 사항을 일관된 방식으로 재구성 할 수 있을지 의심됩니다. 기억하는 것이 훨씬 쉽고 명확합니다. 되돌리기는 작업을 파괴하므로주의해서 사용하십시오!
Peter Parker

104

해결책이 있습니다 ... 휴지통으로 이동하면 삭제 된 파일의 최신 버전을 찾을 수 있습니다. 되 돌리는 모든 파일을 휴지통에 "던지기"합니다.


2
덧붙여서, 이것이 TortoiseSVN이 되돌리기를 할 때 너무 느리게 보이는 이유이기도합니다. 휴지통이 가득 차면 파일을 휴지통으로 이동하는 작업이 매우 느립니다. "일반-대화 상자 1"TortoiseSVN 설정에서이 기능을 비활성화 할 수 있습니다.
Wim Coenen

8
고마워요, 당신이 날 구 했어요! 실수로 되돌리기를했고 거의 2 주간의 작업을 잃었습니다. 다행히도 휴지통에서 찾았습니다.
Arie Livshin

2
@ArieLivshin, 왜 커밋하지 않고 2 주 동안 일하겠습니까? 지점에 대해 더 많이 알아야 할 것 같습니다.
JoelFan 2013 년

짜증나게 ankhsvn은 이것을하지 않습니다
Phil Hale

감사합니다 .. 매우 도움이 ful.
Prem Singh Bist 2015-08-12

32

실제로 Subversion에 국한되지는 않지만 Eclipse로 작업하는 경우 로컬 역사에서 운을 시험해 볼 수 있습니다.

이제 조금 더 Subversion에 특화된 것이 있습니다. 모든 변경 사항에 대해 분기를 만들고 싶지 않다면 로컬에서 몇 개의 트렁크를 체크 아웃 할 수 있습니다 (trunk-modif-1, trunk-modif-2 .. .). 각 "수정"은 별도의 트리에서 수행되며 어떤 체크 아웃이 어떤 수정에 해당하는지 목록 만 유지하면됩니다.

또는 로컬에서 Git을 사용할 수 있지만 시도한 적이 없습니다.


3
참고-오른쪽 클릭 컨텍스트 메뉴 "로컬 히스토리에서 복원"을 통해 로컬 히스토리로 이동합니다.
HDave 2013 년

Eclipse 부분의 경우 더 구체적인 답변이 있습니다. stackoverflow.com/a/18220708/517705
Sk8erPeter

14

최근에 SVN에 새 파일 변경 사항 (약 10 개)을 적용하지 않는이 실수를 저질렀 고 저의 어리석은 실수 때문에 모두 사라졌습니다. 그러나 저를 구한 것은 상황에 맞는 메뉴의 "이전 버전 복원"옵션이었습니다. 안도감과 교훈을 얻은 휴.


감사합니다! 이로 인해 작업 시간을 다시 할 필요가 없습니다! 이 창 기능은 본 적이 없지만 베이컨을 구했습니다!
NibblyPig 2012 년

일을 절약 한 이로 인해 빚진 6,000 달러를 어디로 보낼 수 있습니까? 수업은 ... 배운
HDave

내 하루를 구 해주셔서 감사합니다.
Opax Web 2014

성능을 저하 시키므로 이러한 복원을 지원하는 체크 포인트는 꺼져 있습니다. 최근 Eclipse는 Undo 기능의 문제로 인해 git 아카이브를 포함하여 내 프로젝트의 폴더를 삭제했으며 오히려이 기능을 켜고 싶었습니다. 그러나 Recuva라는 Windows 프로그램이 삭제 된 파일 공간을 검색하여 저를 구했습니다. 모든 파일을 복구 할 때까지 영향을받는 드라이브에 콘텐츠를 추가하지 않도록 매우주의했으며, 일주일 전 가장 최근 백업 이후 변경된 모든 소스 파일을 제공했습니다. 바이너리 파일은 대부분 복구 할 수 없었습니다.

8

svn 명령 줄 클라이언트를 사용하는 경우 파일을 복구 할 수 없습니다 .

그러나 TortoiseSVN을 svn 클라이언트로 사용하는 경우 복구 할 수 있습니다. TortoiseSVN은 자동으로 휴지통으로 이동합니다. 실수로 되 돌린 후 거기에서 복원 할 수 있습니다.

이것은 TortoiseSVN에서 구성 가능한 옵션입니다. 그것은 아래 설정 -> 대화 1 -> 사용 휴지통 복귀.

기본적으로 선택되어 파일이 휴지통으로 이동됩니다. 원하신다면 (대부분이 기능을 사용하지 않으셔도됩니다. 이유가 있으면 알려주세요)


1
! 신난다 ... 나 저장
Janani 쿠마을

6

InteliJ를 사용하고 있다면 운이 좋은 사람입니다. 상단 메뉴에는 버전 관리 옵션이 있으며 그 아래에는 로컬 기록 옵션이 있으며, 여기에서 해당 파일로 수행 한 모든 작업 (업데이트, 커밋, 되돌리기)을 포함하여 선택한 파일의 모든 기록을 찾을 수 있습니다.

행운을 빕니다, Arkde


1
새 파일 인 경우 파일 자체가 삭제됩니다. 이 경우 프로젝트보기에서 파일이 있던 폴더를 선택한 다음 '로컬 기록'을 선택합니다. IntelliJ는 다시 하루를 구했습니다.
Nufail 2013-08-05

4

또한 .NET 코드 (.cs 파일 등)를 되돌리고 되돌리기 전에 애플리케이션을 빌드했지만 변경 한 후에는 리플렉터 도구를 사용하여 어셈블리 파일에서 변경 사항을 복구하여 코드를 볼 수 있습니다.


3

Eclipse의 히스토리 브라우저에서 파일 (Local Revisions)의 로컬 변경 로그를 찾은 것은 매우 운이 좋았습니다. 나는 차이점을 하나씩 검사하고 덮어 쓰기 전에 파일을 몇 번 저장했습니다.


2

솔루션 (Visual Studio + AnkhSVN)을 되 돌렸고 몇 가지 파일의 변경 사항이 손실되었습니다. 휴지통에서 파일을 찾을 수 없습니다.

하지만 Handy Recovery로 손실 된 파일을 복구했습니다. 즉, SVN은 되돌릴 때 파일을 삭제합니다.

데이터 복구 소프트웨어사용 하여 되 돌린 파일을 복구하십시오 (예 : 핸디 복구 평가판 ).


1

아니요, SVN은 로그 또는 백업을 유지하지 않습니다 (다른 답변에 언급 된 TortoiseSVN에 대한 솔루션이 있지만).

그러나 누군가가 답변을 탐색하고 OP의 질문 에서이 주석을 알아 차리지 못한 경우 :

"다행히도이 경우 금요일에 퇴근하기 전에"svn diff> temp.txt "를 수행했고 temp.txt 파일이 여전히 내 하드 드라이브에 있었기 때문에 해당 파일을"패치 "로 공급하고 복구 할 수있었습니다. 내 잃어버린 변화. "

나는 당신이 'svn revert'를하기 전에 'svn diff'를하는 것이 일반적인 패러다임이라고 생각합니다. 이렇게하는 습관이 생기면 diff가 터미널에 울려 퍼지더라도 손실 된 변경 사항을 복구 할 수있는 방법이 하나 이상 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.