본문 바로가기

프로젝트 관리의 속삭임

[프로젝트][관리][소스관리][Git]Git의 이해

* 오픈소스의 성지라고 할수 있고, 우리가 사용하는 대부분의 오픈소스가 Git에서 나왔음을 볼수 있다.

* 그렇다면 Git가 무엇이며, 이것을 사람들이 왜쓰는지 알아보자.




* 분산버전관리시스템(DVCS) : 아니? 버전관리를 하는데 따로따로 한다고? 처음에는 이래 생각 할수도 있다. 하지만 중앙 집중해서 관리하는데 중앙에 있는 소스가 하드웨어 장애나 기타 장애로 못쓰게 된다면? 이럴땐 DVCS는 여러 곳에 흩어진 Repositories로 복원을 하게 된다. 중앙집중버전관리시스템(CVCS)은 못하는 일이다. 즉, CheckOut은 모든 클라이언트에 행해지는 진정한 백업이다. 또안, 오픈소스는 여러 사람이 또는 여러 그룹이 작업을 하는데, 분산버전관리시스템은 리모트 저장소가 많을 수도 있다. 그래서 사람들은 동시에 다양한 그룹과 다양한 방법으로 협업할 수 있다. 


* 델타가 아니라 스냅샷 : 이부분은 이해가 조금 힘든듯 하다. 아시는분 댓글 달아주면 최고 ㅠ.ㅠ

* 거의 모든 명령을 로컬에서 실행 : 로컬에 Repositories가 있어서 네트워크 부하를 줄이고, 빠른 속도를 느낄수 있다.

* Git의 무결성 : Git는 모든 데이터를 체크섬을 구하고 관리를 한다. 그래서 Git가 아니면 해당 파일을 컨트롤 할수 없다. 

                       즉, 버전관리 시스템이 관리 하는 파일을 다른 어떠한 것에 의해 변경이 된다면 버전관리시스템에 데이터가 맞                        지 않게 된다.

* Git은 데이터를 추가만 한다 : 데이터를 삭제하거나 되돌리거나 할방법은 없다. 즉, 일단 스냅샷을 커밋하고 나면 데이터를 잃어 버릴 염려는 없다는 말이다.





* Git의 세가지 상태 

1. Committed : 데이터가 로컬 데이터베이스에 안전하게 저장됐다는 것을 의미한다.

2. Modified : 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 것을 말한다.

3. Staged : 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태를 의미한다.