[Git] 원격저장소에서 협업하기 : 브랜치(Branch)

2022. 4. 19. 11:42Git

1. 두명이 동시에 버전 관리를 해야 한다면?

위 그림을 보면 1시에는 고양이가 1장, 2장, 3장을 하고 문어는 4장을 합니다. 고양이는 1시에 작성한 1장, 2장, 3장을 만든 것을 '고양이버전1'로 저장합니다. 그리고 2시가 되자 1장, 2장, 3장, 4장의 문서 작성이 끝났기 때문에 문어는 '고양이버전1'을 가져와서 본인이 작성한 4장을 추가해서 '문어버전1'을 만듭니다. 3시가되자 문어는 고양이의 최신 버전(고양이 버전2)이 있다는 것을 알게 됩니다. 그래서 '고양이버전2'를 가져와서 업데이트하고 '문어버전2'로 저장합니다.

 

위 그림을 통해서 두 명이 동시에 버전 관리를 할 때에도 서로의 작업물에 의존하지 않고 내가 원할때 코드를 올리고, 또 내가 원할때 협업자의 코드와 합칠수 있음을 알 수 있습니다.

 

2. Git이 커밋을 관리하는 방식 : 줄줄이 기차

Git에서는 병렬 버전 관리를 다음과 같이 관리합니다.

위의 그림과 같이 일반적으로 한명이 작업한다면 커밋은 선형적으로 최신 커밋은 바로 이전의 커밋을 기반으로 생성됩니다. 하지만 고양이와 문어가 커밋 3을 기준으로 각각 파일을 수정해서 커밋한다면 다음과 같아집니다.

위와 같이 같은 커밋을 기준으로 각각 파일을 수정해서 커밋을 한다면 두줄로 갈래가 나눠지게 됩니다. 이렇게 특정 기준에서 줄기를 나누어 작업할 수 있는 기능을 브랜치(Branch)라고 합니다.

 

3. 브랜치

3.1 순서대로 커밋1, 커밋2, 커밋3을 만들었다고 가정합니다. 새로 커밋을 생성할때마다 [master] 브랜치의 포인터가 최신 커밋을 가리킵니다.

3.2 커밋3을 기준으로 고양이 브랜치 생성

3.3 고양이 브랜치에서 커밋을 생성

3.4 master 브랜치에서 커밋을 생성

3.5 [HEAD] 포인터를 이용해서 master 브랜치로 이동

  • [HEAD] 포인터는 브랜치 혹은 커밋을 가리키는 포인터입니다.
  • [HEAD] 포인터를 이용해서 브랜치와 커밋 사이를 마음대로 이동할 수 있습니다.

References

source code : https://github.com/yonghwankim-dev/git_study
팀 개발을 위한 Git Github 시작하기, 정호영 진유림 저