취미와 밥줄사이

[Git] 브랜치란 무엇인가? 본문

Tools/Git & GitHub

[Git] 브랜치란 무엇인가?

취미와 밥줄사이 2021. 10. 12. 01:08

브랜치란 무엇인가?


  • 개발을 하다 보면 코드를 여러 개로 복사해야 하는 일이 자주 생긴다. 코드를 통째로 복사하고 나서 원래 코드와는 상관없이 독립적으로 개발을 진행할 수 있는데, 이렇게 독립적으로 개발하는 것이 브랜치다.
  • 다른 버전 관리 시스템과는 달리 Git은 브랜치를 만들어 작업하고 나중에 Merge 하는 방법을 권장한다.
  • Git 브랜치에 능숙해지면 개발 방식이 완전히 바뀌고 다른 도구를 사용할 수 없게 된다.

 

커밋과 트리 데이터

다시 파일을 수정하고 커밋하면 이전 커밋이 무엇인지도 저장한다.

 

 

커밋과 이전 커밋

Git의 브랜치는 커밋 사이를 가볍게 이동할 수 있는 어떤 포인터 같은 것이다. 기본적으로 Git은 master 브랜치를 만든다. 처음 커밋하면 이 master 브랜치가 생성된 커밋을 가리킨다. 이후 커밋을 만들면 master 브랜치는 자동으로 가장 마지막 커밋을 가리킨다.

 

Git의 버전 관리 시스템에서 master 브랜치는 특별하지 않다. 다른 브랜치와 다른 것이 없다. 다만 모든 저장소에서 master 브랜치가 존재하는 이유는 git init 명령으로 초기화 할 때 자동으로 만들어진 이 브랜치를 애써 다른 이름으로 변경하지 않기 때문이다.

 

브랜치와 커밋 히스토리

 

새 브랜치 생성하기


  • 새로 만든 브랜치는 지금 작업하고 있던 마지막 커밋을 가리킨다
  • 브랜치를 새로 만드는 명령은 git branch [브랜치명]
  • HEAD라는 특수한 포인터는 지금 작업하는 로컬 브랜치를 가리킨다.
  • git branch 명령은 브랜치를 만들기만 하고 브랜치를 옮기지 않는다

현재 작업 중인 브랜치를 가리키는 HEAD

  • git log 명령에 --decorate 옵션을 사용하면 쉽게 브랜치가 어떤 커밋을 가리키는지도 확인할 수 있다.

브랜치 이동하기


  • git checkout 명령을 사용하며 브랜치를 이동할 수 있다.
  • 브랜치를 이동하면 워킹 디렉토리의 파일이 변경된다.
    • 브랜치를 이동하면 워킹 디렉토리의 파일이 변경된다는 점을 기억해두어야 한다. 이전에 작업했던 브랜치로 이동하면 워킹 디렉토리의 파일은 그 브랜치에서 가장 마지막으로 했던 작업 내용으로 변경된다.
    • 파일 변경시 문제가 있어 브랜치를 이동시키는게 불가능한 경우 GIt은 브랜치 이동 명령을 수행하지 않는다.
  • 프로젝트 히스토리는 분리돼 진행한다(갈라진 브랜치)
  • 우리는 브랜치를 하나 만들어 그 브랜치에서 일을 좀 하고, 다시 원래 브랜치를 되돌아와서 다른 일을 할 수 있다. 두 작업 내용은 서로 독립적으로 각 브랜치에 존재한다. 커밋 사이를 자유롭게 이동하다가 떄가 되면 두 브랜치를 Merge 한다. 간단히 branch, checkout, commit 명령을 사용해서

갈라진 브랜치

 

 

REFERENCE


https://git-scm.com/book/ko/v2/Git-%EB%B8%8C%EB%9E%9C%EC%B9%98-%EB%B8%8C%EB%9E%9C%EC%B9%98%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

'Tools > Git & GitHub' 카테고리의 다른 글

[Git] Branch 주요 명령어 정리  (0) 2021.10.12
[Git] 커밋 히스토리 조회하기  (0) 2021.10.12
[Git] Git이란?  (0) 2021.10.12
[Git] 버전관리란?  (0) 2021.10.12
[Git] 명령어 - Branch와 Merge  (0) 2021.10.11