sitelink1 | http://blog.naver.com/slaior/220103788268 |
---|---|
sitelink2 | |
sitelink3 |
버전 관리 시스템이란?
- 파일의 상태를 주시하고 있다가 파일이 변겅된 경우 해당 변경 사항에 대한 태그를 표시한 후 사용자가 원하는 경우 표시해둔 단계로 복귀할 수 있는 시스템
VCS의 사용이유
- 여러 명이 공동으로 개발할 경우 소스코드의 관리가 어려움
- merging에 시간과 노력이 많이듬
- 위의 내용을 줄여서 생산성을 향상 시키기 위해 VCS를 사용함
- 의도치 않았던 상황에 들어서거나 문서의 내용 중 일부를 이전 상태로 되돌려야하는 경우 안전장치 역활을 함
- 데이터 손실 걱정 없이 이전 단계 어디로든 이동할 수 있음
버전 관리시스템의 종류
- 로컬 버전관리시스템
- 중앙 집중형 버전관리시스템
- 분산 버전 관리시스템
분산 버전 관리시스템의 장점
- 서버와 지속적으로 연결돼 있는 상태를 유지하지 않더라도 로컬에 변경 사항을 기록함
- 서버에 저장되어 있는 파일들에 의존적이지 않음
- 협업 시 각기 다른 기기에 저장된 이력에 의존적이지 않음
- 작업을 재사용할 수 있음
Git의 장점
- 원자성: 호출과 응답 사이에 발생하는 단일 인스턴트로 작업하는 속성
- 성능: 깃은 로컬에서 파일을 다루기 때문에 성능이 뛰어남. 타 버전 관리시스템의 경우 각각의 파일들에 대한 차이점만 기록하지만 Git의 경우 차이점을 저장하는 대신에 파일 집합들에 대한 스탭샷을 만들어서 다룸. 따라서 이전 작업으로 복구할 때도 스냅샷 기반으로 한번에 옮겨갈 수 있음. 복사 파일을 만드는 건 아니고 해당 파일에 대한 변경내용이 없다면 참조점만 만들고 변경사항이 있는 파일 내용만 저장함. 스냅샷으로 복구할때는 참조가 걸려는 있는 파일을 기준으로 스냅샷 기준으로 돌아감. 이런 특성을 이용해 버전 이력을 가능한 작은 공간을 이용해서 관리가 가능함.
- 보안성: Git은 모든 데이터를 저장하기에 앞서 SHA-1 해시를 이용해 체크섬을 만들어 데이터를 관리함. 이후에는 체크섬을 이용해 참조함. Git 없이는 어떤 파일이나 디렉토리의 콘텐츠도 변경할 수 없음.
- 타 버전 관리시스템에 비해서 분기(branching)와 병합(merging)이 훨씬 쉽기 때문임
고려점
- 깃을 잘 사용하기 위해서는 개발할 때 기능을 최소단위로 쪼개고 그 단위 기능별로 분기를 생성하고 단위 기능을 병합하는 것이 좋음
기타
- 리눅스 커널을 만든 리눅스 토발즈가 Git 프로젝트의 창시자임
Git을 이용해 버전 관리할 때 작업공간(worksapce)에서 필요로 하는 개념
- 초기화 절차: 초기화는 디렉토리를 지정하는 절차임.
- 저장소에 파일 추가
- 추가 파일 커밋
- 체크아웃
- 리셋