버전이란 ?
이전과 약간씩 다른 변화들을 구분하는 표시
이때 변화들은 의미있는 변화들만을 의미
버전 관리가 필요한 이유?
프로그래머들은 안정적으로 코드를 관리해야하는데, 프로그램이 한단계씩 증가 할수록 살도 덫붙여 지고 기능들이 추가되기 마련이다. 하지만, 기능을 구현하는 과정에서는 일시적으로 코드가 불안정해지고 비로소 실행이 됨으로써 안정된 코드로 바뀌게 된다.
이 불안정한 코드로 계속해서 코드를 짜다보면 언젠간 더이상 수정이 불가능하고 개발이 불가능해지는 수준이 될 수가 있다. 이때 이전으로 되돌려 다시 코드를 짜야되는 경우가 생기는데, 그 이전의 기준이 바로 '버전'이라고 하는 것이다.
버전 관리 소프트웨어가 필요한 이유?
대부분의 사람들은 한 파일에 변경 사항을 저장하는데, 이럴 경우에는 버전이 입력되지 않아 이전으로 되돌리는 것이 불가능해진다. 그래서 다른 이름으로 저장하는 방법을 많이 사용하고는 하지만, 이또한 많은 양의 파일의 경우 관리하기가 매우 불편하다.
따라서 이때 버전 관리 소프트웨어를 사용할 경우 굉장히 버전의 관리가 쉬워진다.
최초의 버전
SCCS는 유닉스 환경에서 사용이 가능하며 개발 이후 많은 VCS들이 등장하게 됨
1 저장소를 한 곳에서 중심적으로 관리(개발자들의 소스코드 등)를 하여서 운영에 굉장히 수월 (클라이언트 - 서버 모델)
2 중앙 저장소에 문제가 생기게 된다면 모든 개발자들의 접근이 중단 (인터넷 연결 문제가 중요)
3 하나의 파일을 변경하려면 사용하려고 하는 개발자들이 순서대로 대기를 해야되는데, 이때 적용되는 모델이 '잠금 모델'
1 저장소가 여러개 존재하기 때문에 각 버전 별로 소스를 개별적으로 보관이 가능
2 개발자에게 공유 가능한 저장소 사본을 제공하며 이곳에서 코드를 저장하고 관리
3 서버는 각 저장소 자료를 동기화하고 중개하는 역할만 수행하기 때문에 서버 문제가 생겨도 지속적으로 개발이 가능
앞서 말한 것들을 정리하여 특징을 나누어 보았다.
Git에는 여러개의 기능이 존재하지만 크게 두가지로 본다면,
1 코드 공유
2 책임과 저장
3 원격 공유
4 병합
5 공개