소스코드를 효과적으로 관리하기 위해 개발된 '분산형 버전 관리 시스템'이다.
분산형 버전 관리라는 것은 하나의 중앙 서버가 존재하고, 클라이언트들은 각자의 컴퓨터 저장소에 중앙 서버의 사본을 가지고 작업을 하는 것을 말한다.
Git의 가장 큰 장점은 소스 코드가 변경된 이력을 쉽게 확인할 수 있고, 특정 시점에 저장된 버전과 비교하거나 특정 시점으로 되돌아갈 수있다는 것이다.
Git을 사용하는 프로젝트를 지원하는 '웹호스팅 서비스'로 루비 온 레일스로 작성되었다.
Git을 업로드 할 수 있는 웹사이트로 그래픽 유저 인터페이스(GUI)를 제공한다. Git Hub는 Git을 이용한 버전 제어와 공동 작업을 위한 가장 인기 있는 플랫폼이다.
Git의 저장소이다. 저장소란 말처럼 파일이나 폴더를 저장하는 곳이다.
git repository는 크게 Local과 Remote 두 종류로 나눠 볼 수 있다.
위 그림에서 로컬 저장소에는 working directory와 staging Area가 존재한다.
branching : 가지를 새로 치는 것
merging : 가지를 다시 합치는 것
프로젝트 개발시 master 브랜치에 바로 push를 하지 않고 가지처럼 여러 브랜치를 나눠 목적에 맞는 기능을 구현하게 된다면 가지를 다시 합치게 된다.
필요에 따라 브랜치를 만들 수 있고, 위로 갈수록 (master) 안정성이 높아질 뿐만 아니라 버전관리에도 용이하다는 장점이 있다.
아래 그림을 예를 들면,
master 브랜치는 사용자들이 사용하는 서비스 즉, 버그가 없거나 최소화한 소스 코드이고,
develop 브랜치는 개발중인 버전의 소스 코드를 관리한다. 여기서 충분한 테스트와 버그를 거친다음에 master 브랜치에 merging된다.
feature는 하나하나의 기능들을 담고 있다. 기능들을 다 완성한 다음에 develop으로 merging 된다.