Subversion에서 파일을 삭제하면 파일의 기록과 내용을 어떻게 볼 수 있습니까? 내가 svn cat
없거나 svn log
존재하지 않는 파일을 시도 하면 파일이 존재하지 않는다고 불평합니다.
또한 파일을 부활 시키려면 svn add
다시 되돌려 야합니까?
(Subversion에 대해 구체적으로 질문했지만 Bazaar, Mercurial 및 Git도이 사례를 처리하는 방법에 대해 듣고 싶습니다.)
답변
삭제 된 파일의 로그를 얻으려면
svn log -r lastrevisionthefileexisted
파일을 부활시키고 버전 기록을 유지하려면
svn copy url/of/file@lastrevisionthefileexisted -r lastrevisionthefileexisted path/to/workingcopy/file
파일 내용 만 원하지만 버전이 정해지지 않은 경우 (예 : 빠른 검사)
svn cat url/of/file@lastrevisionthefileexisted -r latrevisionthefileexisted > file
어쨌든 삭제 된 파일을 다시 가져 오기 위해 ‘svn up’을 사용하지 마십시오!
답변
오래된 파일을보고 싶을 때 실제로 다음과 같은 차이점을 알아야합니다.
svn cat http://server/svn/project/file -r 1234
과
svn cat http://server/svn/project/file@1234
첫 번째 버전은 현재 http : // server / svn / project / file 로 사용 가능한 경로를보고 수정 버전 1234에서와 같이 해당 파일을 검색합니다. 따라서이 구문은 파일 삭제 후에 작동 하지 않습니다 .
두 번째 구문은 사용할 수 있었던 파일 가져 // 서버 / SVN / 프로젝트 / 파일 : HTTP 버전이 구문은 그래서 1234에서 합니까 삭제 된 파일에 대한 작업을.
이 방법을 조합하여 개정 2345에서 http : // server / svn / project / file로 사용 가능 하지만 1234의 내용으로 다음과 같은 파일을 검색 할 수 있습니다 .
svn cat http://server/svn/project/file@2345 -r 1234
답변
먼저 파일이 삭제 된 개정 번호를 찾으십시오.
svn log -v > log.txt
그런 다음 log.txt (SVN 전문가가 아니므로 더 나은 방법을 모르겠습니다)에서
D <deleted file>
어느 개정판인지 확인하십시오. 그런 다음 다른 답변에서와 같이 이전 개정을 사용하여 파일을 부활 시키십시오.
답변
git에서 특별히 특별한 것은 아닙니다. 파일 이름을 알고 있으면 로그를 사용하여 파일을 제거한 변경 사항을 찾을 수 있습니다.
git log -n 1 -- filename
그런 다음 해당 커밋을 사용하여 삭제 전에 존재했던 파일을 가져올 수 있습니다.
git checkout [last_revision]^ filename
예:
dhcp-120:/tmp/slosh 587% ls -l slosh.tac
ls: slosh.tac: No such file or directory
dhcp-120:/tmp/slosh 588% git log -n 1 -- slosh.tac
commit 8d4a1f1a94e4aa37c1cb9d329a140d08eec1b587
Author: Dustin Sallings <dustin@spy.net>
Date: Mon Dec 15 11:25:00 2008 -0800
Get rid of a .conf and replace it with .tac.
dhcp-120:/tmp/slosh 589% git checkout 8d4a1f^ slosh.tac
dhcp-120:/tmp/slosh 590% ll slosh.tac
-rw------- 1 dustin wheel 822 Dec 30 12:52 slosh.tac
이것은 실제로 파일을 개정 제어로 되 돌리는 것은 아닙니다. 최종 상태에 있던 파일을 현재 위치에 놓기 만하면됩니다. 그런 다음 추가하거나 검사하거나 그 시점에서 무엇이든 할 수 있습니다.
답변
GUI 만 사용하는 솔루션 :
파일 이름을 알고 있지만 마지막 개정 번호 또는 경로를 모르는 경우 :
- Repo Browser에서 루트에 “로그 표시”를 수행하십시오.
- 로그 대화 상자의 맨 아래에있는 “모두 표시”를 누르십시오.
- 로그 대화 상자의 맨 위에있는 필터 텍스트 상자에 파일 이름을 입력하십시오.
그러면 파일이 추가 / 수정 / 삭제 된 개정판 만 표시됩니다. 이것은 파일의 역사입니다.
상위 폴더 중 하나를 삭제하여 파일을 삭제하면 로그에 ‘삭제 된’항목이 없으므로 mjy의 솔루션이 작동하지 않습니다. 이 경우 필터링 된 로그의 가장 최근 항목은 삭제시 해당 내용에 해당합니다.
답변
svn log -v | grep -B50 YourDeletedFileName
경로와 개정판을 제공합니다. git에서 (이름 바꾸기도 확인) :
git log --diff-filter=DR --name-only | grep -B50 YourDeletedFileName
답변
Dustin의 답변 외에도 내용을 확인하고 확인하지 않으려는 경우 그의 예에서 다음을 수행 할 수 있습니다.
$ git show 8d4a1f^:slosh.tac
: : 개정과 해당 개정에서 경로를 분리하여 특정 개정에서 특정 경로를 효과적으로 요청합니다.