전체 치트시트

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-project
svn info

작업 사본 또는 URL 정보 표시: URL, 리비전, 마지막 수정 등.

svn info .

매일 작업

svn update

작업 사본을 저장소와 동기화; 서버 변경을 병합할 수 있습니다.

-r <rev> 특정 리비전으로 업데이트; --accept postpone|base|mine-full|theirs-full|edit|launch

svn update --accept postpone
svn status

작업 사본 상태 표시: 수정, 추가, 삭제, 추적 안 됨.

-u 서버 out-of-date 정보; -v verbose; --quiet 추적 안 됨 숨김

svn status -u
svn add <path>

다음 커밋 시 추가할 파일 또는 디렉터리를 예약합니다.

-N 비재귀(디렉터리만); --force 이미 버전 관리 중인 파일도 추가

svn add src/utils/ helpers/
svn delete <path>

작업 사본에서 파일 또는 디렉터리를 제거하고 다음 커밋에서 삭제를 예약합니다.

--keep-local 작업 사본에 파일 유지(서버에서 삭제 안 함)

svn delete obsolete/old-config.json
svn 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 --summarize
svn 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-x
svn 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 12345
svn merge --reintegrate <url>

기능 브랜치를 원래 브랜치로 다시 통합(레거시, 1.8 이전).

svn merge --reintegrate ^/branches/feature-x
svn 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 -v
svn blame <file>

파일의 각 줄에 대해 작성자와 리비전을 표시합니다(praise / annotate).

-r <rev> 지정 리비전 기준 주석; -v 리비전 텍스트 포함

svn blame src/index.ts | tail -20
svn 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/wc
svn export <url> [<dir>]

(.svn 메타데이터 없는) 깨끗한 디렉터리 트리를 내보냅니다 — 패키징에 유용.

-r <rev> 특정 리비전; --force 기존 파일 덮어쓰기

svn export ^/tags/v1.2.0 ./release-1.2
svn 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.patch
svn patch <patch-file>

svn diff 로 생성된 통합 diff 를 작업 사본에 적용합니다.

--dry-run 미리 보기; --reverse-cmd

svn patch --dry-run /tmp/feature-x.patch

치트시트 버전 1.0.0

SVN 1.10+ 대응