SVN과 Git 비교: 구조와 기본 명령어

SVN과 Git의 핵심 차이

구분SVNGit
기본 구조중앙 집중형분산형
작업 기준Repository 중심Local Repository 중심
Commit중앙 SVN에 바로 반영로컬 Git에 먼저 기록
Push없음로컬 → 원격 저장소
원격 변경 반영svn update로 저장소 변경을 working copy에 반영git pull로 fetch 후 현재 branch에 merge/rebase 등으로 통합
Branchsvn copy로 repository의 디렉터리를 복사해 구성커밋을 가리키는 가벼운 이동식 포인터
Mergesvn merge 결과를 working copy에 반영한 뒤 svn commit으로 저장로컬 repository에서 branch 이력을 통합
오프라인 작업제한적대부분 가능
이력중앙 저장소 중심일반적인 clone은 전체 이력을 보유하며 shallow/partial clone은 예외

변경 사항 저장 흐름

SVN의 저장 흐름:

내 PC
  │
  │ svn commit
  ▼
SVN Repository

Git의 저장 흐름:

Working Directory
       │
       │ git add
       ▼
Staging Area
       │
       │ git commit
       ▼
Local Repository
       │
       │ git push
       ▼
Remote Repository

명령어 대응표

아래 명령어는 비슷한 작업 목적을 기준으로 대응한 것이며 동작과 범위가 완전히 같지는 않다.

SVNGit의미
svn checkoutgit clone작업 시작: working copy 생성 / repository 복제
svn updategit pull저장소·원격 변경 반영(동작 방식은 다름)
svn statusgit status변경 파일 확인
svn diffgit diff변경 내용 확인
svn addgit add변경 파일 등록
svn commitgit commit변경사항 저장
-git push원격 저장소에 반영
svn loggit log커밋 이력
svn revertgit restoreworking copy 변경 취소(세부 범위는 다름)
svn copygit branchbranch 생성 목적(구현 방식은 다름)
svn switchgit switch작업 대상 branch 변경(의미와 범위는 다름)
svn mergegit mergebranch 변경 통합(SVN은 이후 commit 필요)