Programing

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

lottogame 2020. 8. 31. 08:18
반응형

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


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

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

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

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


아니, (물론) 아니 .

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

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

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

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


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


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

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

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


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


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

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

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

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


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

행운을 빕니다, Arkde


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


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

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

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


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


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

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

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

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

참고 URL : https://stackoverflow.com/questions/1521332/is-there-a-way-to-recover-from-an-accidental-svn-revert

반응형