SVN과 Git 비교: 구조와 기본 명령어
SVN과 Git의 핵심 차이
| 구분 | SVN | Git |
|---|---|---|
| 기본 구조 | 중앙 집중형 | 분산형 |
| 작업 기준 | Repository 중심 | Local Repository 중심 |
| Commit | 중앙 SVN에 바로 반영 | 로컬 Git에 먼저 기록 |
| Push | 없음 | 로컬 → 원격 저장소 |
| 원격 변경 반영 | svn update로 저장소 변경을 working copy에 반영 | git pull로 fetch 후 현재 branch에 merge/rebase 등으로 통합 |
| Branch | svn copy로 repository의 디렉터리를 복사해 구성 | 커밋을 가리키는 가벼운 이동식 포인터 |
| Merge | svn merge 결과를 working copy에 반영한 뒤 svn commit으로 저장 | 로컬 repository에서 branch 이력을 통합 |
| 오프라인 작업 | 제한적 | 대부분 가능 |
| 이력 | 중앙 저장소 중심 | 일반적인 clone은 전체 이력을 보유하며 shallow/partial clone은 예외 |
변경 사항 저장 흐름
SVN의 저장 흐름:
내 PC
│
│ svn commit
▼
SVN RepositoryGit의 저장 흐름:
Working Directory
│
│ git add
▼
Staging Area
│
│ git commit
▼
Local Repository
│
│ git push
▼
Remote Repository명령어 대응표
아래 명령어는 비슷한 작업 목적을 기준으로 대응한 것이며 동작과 범위가 완전히 같지는 않다.
| SVN | Git | 의미 |
|---|---|---|
svn checkout | git clone | 작업 시작: working copy 생성 / repository 복제 |
svn update | git pull | 저장소·원격 변경 반영(동작 방식은 다름) |
svn status | git status | 변경 파일 확인 |
svn diff | git diff | 변경 내용 확인 |
svn add | git add | 변경 파일 등록 |
svn commit | git commit | 변경사항 저장 |
| - | git push | 원격 저장소에 반영 |
svn log | git log | 커밋 이력 |
svn revert | git restore | working copy 변경 취소(세부 범위는 다름) |
svn copy | git branch | branch 생성 목적(구현 방식은 다름) |
svn switch | git switch | 작업 대상 branch 변경(의미와 범위는 다름) |
svn merge | git merge | branch 변경 통합(SVN은 이후 commit 필요) |