web, server, java, spring 등.. 공부한 것을 기록하는 장소 입니다. 공부하면서 정리하였기 때문에 틀린 내용이 있을 수 있습니다. 이야기 해주시면 수정하겠습니다.
Svn과 Git의 차이점
버전 관리란?
- 버전 관리 시스템은 파일의 변화를 시간에 따라 기록하여 과거 특정 시점의 버전을 다시 불러올 수 있는 시스템( git 설명 참고 링크 )
중앙집중식 관리 vs 분산관리
- svn의 중앙 집중식 버전 관리 시스템(Centralized Version Control System; CVCS)
- git은 분산 버전 관리 시스템(Distributed Version Control System; DVCS)
- 중앙집중식 시스템은 중앙server가 하나 존재. 중앙server에서 version을 관리. 단점은 중앙server에 문제가 생기면 파일 올리기, 파일 받기 등의 기능을 수행할 수 없음
- 분산 버전 시스템은 저장소를 통째로 복사.(checkout) 그래서 서버에 문제가 생겨도 언제든 복구가 가능
파일 관리
- svn은 파일 변화가 있을 때 마다 version을 붙여서 전체 파일을 관리함. 즉 변경되지 않은 파일도 관리
- git은 파일 변화가 없으면 이전 파일 링크만 가지고 있음. 파일을 들고있지 않기때문에 무게도 가볍다
작업 속도
- svn은 모든 작업이 중앙서버를 통해야 가능하다.그래서 commit, push 시 속도가 느리다
- git은 checkout할 때 저장소를 통째로 복사하고 거의 대다수의 작업을 local에서 한다(commit, branch 등.. push, pull 등 중앙 서버를 통하는 것은 느리다)그래서 인터넷이 없어도 작업할 수 있다
파일,프로젝트 상태 분류
- git은 파일을 3가지 상태로 분류한다
- Modified: 파일이 local에서 수정되었다
- Staged: 현재 수정한 파일을 곧 commit할 것이다
- Committed: 파일이 local에 저장되었다
- 또한 프로젝트도 3단계로 분류한다
- working directory : 수정한 파일들이 있는 디렉터리
- staging area : 곧 commit할 데이터 정보를 저장.
- git directory : git이 프로젝트의 메타데이터와 객체 데이터 베이스를 저장하는 곳(.git) commit버튼을 눌러 자신의 local 저장소에 변경사항을 반영하였다