Svn과 Git의 차이점

버전 관리란?

  • 버전 관리 시스템은 파일의 변화를 시간에 따라 기록하여 과거 특정 시점의 버전을 다시 불러올 수 있는 시스템( git 설명 참고 링크 )

중앙집중식 관리 vs 분산관리

  • svn의 중앙 집중식 버전 관리 시스템(Centralized Version Control System; CVCS)
  • git은 분산 버전 관리 시스템(Distributed Version Control System; DVCS)
  • 중앙집중식 시스템은 중앙server가 하나 존재. 중앙server에서 version을 관리. 단점은 중앙server에 문제가 생기면 파일 올리기, 파일 받기 등의 기능을 수행할 수 없음
  • 분산 버전 시스템은 저장소를 통째로 복사.(checkout) 그래서 서버에 문제가 생겨도 언제든 복구가 가능

파일 관리

svn

  • svn은 파일 변화가 있을 때 마다 version을 붙여서 전체 파일을 관리함. 즉 변경되지 않은 파일도 관리

git

  • git은 파일 변화가 없으면 이전 파일 링크만 가지고 있음. 파일을 들고있지 않기때문에 무게도 가볍다

작업 속도

  • svn은 모든 작업이 중앙서버를 통해야 가능하다.그래서 commit, push 시 속도가 느리다
  • git은 checkout할 때 저장소를 통째로 복사하고 거의 대다수의 작업을 local에서 한다(commit, branch 등.. push, pull 등 중앙 서버를 통하는 것은 느리다)그래서 인터넷이 없어도 작업할 수 있다

파일,프로젝트 상태 분류

file, project state

  • git은 파일을 3가지 상태로 분류한다
  • Modified: 파일이 local에서 수정되었다
  • Staged: 현재 수정한 파일을 곧 commit할 것이다
  • Committed: 파일이 local에 저장되었다

sourcetree

  • 또한 프로젝트도 3단계로 분류한다
  • working directory : 수정한 파일들이 있는 디렉터리
  • staging area : 곧 commit할 데이터 정보를 저장.
  • git directory : git이 프로젝트의 메타데이터와 객체 데이터 베이스를 저장하는 곳(.git) commit버튼을 눌러 자신의 local 저장소에 변경사항을 반영하였다