SVN 명령어 치트시트
Subversion(SVN) 명령어 빠른 참조: checkout, update, commit, branch/tag, merge, 히스토리 조회, 저장소 관리 — 자주 쓰는 옵션과 실전 예시까지 정리했습니다.
명령어 28개
시작하기
svn checkout <url> [<dir>]저장소에서 작업 사본을 체크아웃; 프로젝트 파일을 처음 받을 때 사용.
-r <rev> 특정 리비전; --depth empty|files|immediates|infinity
svn checkout https://svn.example.com/repo/trunk ./my-projectsvn info작업 사본 또는 URL 정보 표시: URL, 리비전, 마지막 수정 등.
svn info .매일 작업
svn update작업 사본을 저장소와 동기화; 서버 변경을 병합할 수 있습니다.
-r <rev> 특정 리비전으로 업데이트; --accept postpone|base|mine-full|theirs-full|edit|launch
svn update --accept postponesvn status작업 사본 상태 표시: 수정, 추가, 삭제, 추적 안 됨.
-u 서버 out-of-date 정보; -v verbose; --quiet 추적 안 됨 숨김
svn status -usvn add <path>다음 커밋 시 추가할 파일 또는 디렉터리를 예약합니다.
-N 비재귀(디렉터리만); --force 이미 버전 관리 중인 파일도 추가
svn add src/utils/ helpers/svn delete <path>작업 사본에서 파일 또는 디렉터리를 제거하고 다음 커밋에서 삭제를 예약합니다.
--keep-local 작업 사본에 파일 유지(서버에서 삭제 안 함)
svn delete obsolete/old-config.jsonsvn commit -m "<msg>"로컬 변경을 로그 메시지와 함께 저장소로 보냅니다.
-m 인라인 메시지; -F <file> 파일에서 메시지 읽기; --no-unlock 잠금 유지
svn commit -m "feat: add login form validation"svn diff경로 또는 리비전 간의 통합 diff 를 보여줍니다.
-r <rev1>:<rev2> 리비전 비교; -c <rev> 그 리비전의 변경; --diff-cmd / -x
svn diff -r HEAD~5:HEAD --summarizesvn revert <path>로컬 변경을 폐기하고 파일/디렉터리를 원상복구합니다.
-R 재귀; --depth infinite
svn revert -R .브랜치 & 태그
svn copy <src> <dst>저장소에서 복사로 브랜치 또는 태그 생성(저렴한 복사).
-r <rev> 특정 리비전에서 복사; -m 메시지
svn copy ^/trunk ^/branches/feature-x -m "branch: feature-x"svn switch <url>재체크아웃 없이 작업 사본을 다른 브랜치/태그로 가리키게 합니다.
-r <rev> 특정 리비전으로 전환; --relocate URL 접두사 재작성
svn switch ^/branches/feature-xsvn list <url>체크아웃 없이 저장소 디렉터리 항목을 나열합니다.
-v verbose; -r <rev>
svn list -v ^/tags/병합 & 충돌
svn merge <url[@rev]>두 소스/브랜치 간의 차이를 작업 사본에 적용합니다.
-c <rev> / -r <rev1>:<rev2> 병합할 리비전; --record-only 추적만
svn merge ^/trunk -c 12345svn merge --reintegrate <url>기능 브랜치를 원래 브랜치로 다시 통합(레거시, 1.8 이전).
svn merge --reintegrate ^/branches/feature-xsvn resolve <path>병합/업데이트 후 충돌 파일을 해결합니다.
--accept base|mine-full|theirs-full|working|theirs-conflict|theirs-full
svn resolve --accept theirs-full conflict.txt히스토리 & 조회
svn log파일 또는 저장소의 커밋 로그 메시지를 표시합니다.
-r <rev1>:<rev2> 범위; -l <n> 제한; -v 경로 verbose; --xml
svn log -l 20 -vsvn blame <file>파일의 각 줄에 대해 작성자와 리비전을 표시합니다(praise / annotate).
-r <rev> 지정 리비전 기준 주석; -v 리비전 텍스트 포함
svn blame src/index.ts | tail -20svn cat <url>[@rev]체크아웃 없이 주어진 URL/리비전의 파일 내용을 보여줍니다.
svn cat ^/trunk/README.md@HEAD속성 & 잠금
svn propset <prop> <value> <path>파일 또는 디렉터리에 속성을 설정합니다(예: svn:ignore, svn:executable, svn:mime-type).
-F <file> 값은 파일에서; --revprop 저장소 revprop
svn propset svn:ignore "node_modules\n.DS_Store" .svn propedit <prop> <path>에디터에서 속성 값을 열어 변경합니다.
svn propedit svn:ignore .svn lock <target>다른 클라이언트가 커밋하지 못하도록 파일을 잠급니다(서버 설정 필요).
-m "reason"; --force 잠금 강제 탈취
svn lock images/banner.png -m "editing before release"svn unlock <target>파일 또는 디렉터리의 잠금을 해제합니다.
--force 다른 사람의 잠금 해제
svn unlock images/banner.png저장소 & 정리
svn cleanup작업 사본 정리: 잠금 토큰 제거, 타임스탬프 수정, 보류 중인 작업 완료.
--diff3-cmd / --remove-unversioned 추적 안 됨 정리
svn cleanup /path/to/wcsvn export <url> [<dir>](.svn 메타데이터 없는) 깨끗한 디렉터리 트리를 내보냅니다 — 패키징에 유용.
-r <rev> 특정 리비전; --force 기존 파일 덮어쓰기
svn export ^/tags/v1.2.0 ./release-1.2svn import <path> <url> -m "<msg>"버전 관리되지 않은 트리를 단일 초기 커밋으로 저장소에 추가합니다.
--no-ignore 무시된 파일 포함; --auto-props auto-props 적용
svn import ./src ^/trunk -m "initial import"svn relocate <from-prefix> <to-prefix>작업 사본에 저장된 저장소 URL 접두사를 다시 씁니다(서버 이동).
--strict 매치하지 않는 접두사 거부
svn relocate https://old.svn.example.com https://new.svn.example.com패치
svn diff > patch.diff공유나 svn patch 적용에 적합한 통합 diff 를 생성합니다.
svn diff > /tmp/feature-x.patchsvn patch <patch-file>svn diff 로 생성된 통합 diff 를 작업 사본에 적용합니다.
--dry-run 미리 보기; --reverse-cmd
svn patch --dry-run /tmp/feature-x.patch치트시트 버전 1.0.0
SVN 1.10+ 대응