Git이 커밋(Commit)을 관리하는 방식   

 

  git은 두 명 이상의 사람이 동시에 버전 관리를 할 때에도 서로의 작업물에 의존하지 않고 내가 원할 때 코드를 올리고 수정하고 협업자의 코드와 합칠 수 있다. 즉, 병렬적으로 버전 관리를 할 수 있다.

 

 그렇다면 어떤 원리로 작동할까? 우리는 커밋을 통해 코드의 변경사항을 하나로 덩어리로 묶을 수 있었다. 이러한 커밋들은 바로 전 커밋을 가리키며 시간순으로 쌓이게 된다. 

 

 

 혼자서 작업한다면 위의 그림처럼 한 줄로 계속 커밋이 쌓인다. 하지만, 협업을 통해 버전 관리를 한다면 한 줄로 커밋이 쌓일 수 없다. 커밋 3을 기준으로 두 명이서 각각 파일을 수정해 커밋을 한다고 가정하면 아래 그림과 같이 될 것이다.

 

 

 

 이렇게 특정 기준에서 나누어 작업할 수 있는 기능을 브랜치(Branch)라고 한다. 만약 브랜치를 만들지 않고 둘 다 커밋을 하면 원격 저장소에 먼저 푸시한 커밋(커밋 4)은 정상적으로 올라가고, 뒤늦게 푸시한 다른 커밋(커밋 5)은 "너는 낡은 코드에 푸시를 하는 것이다. 최신 코드에 푸시하라"라는 오류가 난다.