[Git] 사용법2 - Branch

Git 사용법 2 브랜치 관리 목적으로 Git을 사용하는 방법을 알아봅시다.

Branch를 활용하기 위한 Git 사용법

Branch & Conflict

브랜치란 가지라는 뜻입니다. 우리가 일을 하다보면 서로 다른 작업을 한 복제본이 필요할 때가 있습니다. 즉, 같은 파일에 서로 다른 기능을 추가한 경우가 있습니다. 이러한 다양한 작업들을 효율적으로 사용하기 위해 Git을 사용합니다.

  • Branch : 같은 뿌리에서 왔지만 서로다른 방향으로 가고 있는 것을 말합니다.
  • Conflict : 서로 다른 파일을 합칠때 Git이 충돌을 관리해줍니다.

1. 프로젝트 예시

1. branch 사용법

  1. work.txt를 만들고 commit을 추가합니다.
  2. $ git log --all --graph --oneline gitLog3
    • --all : 모든 log 보기
    • --graph : 그래프 모양으로 보여주기
    • --oneline : 간단하게 log 축소하기
  3. Branch 만들고 확인하기 gitLog4
    • 기본 branch는 master 입니다.
  4. 추가로 Branch 만들고 master Branch에 commit 추가하기 gitLog5
    • 추가로 branch를 만들고 특정 branch(master)에서 작업을 하게 되면 위와 같은 branch가 생깁니다.
  5. git checkout apple
    • 특정 branch로 이동하기
    • 기존의 master work4 commit의 작업물이 없었던 apple branch로 돌아가게 됩니다.

2. branch 병합

  • merge 기본 flow

    merge 위 그림과 같이, base branch에서 여러갈래로 나누어질 때가 있습니다. 이때 서로 다른 branch를 합칠때 merge를 사용하게 되고 합치는 commit을 merge commit이라고 합니다.

3. 3 Way Merge

  1. 두개의 브랜치가 있고 각자 다른 함수들을 가지고 있다고 가정해봅시다.
here there
A A
H B
C T
H T
  1. 2way merge에서는 수동으로 병합해야하는 부분은 두 부분이 다른 곳입니다.
  2. 하지만 3way merge에서는 base와 비교해 변경된 부분을 체택해서 merge를 진행하게 됩니다.
here base(기본) there 2way merge 3way merge
A A A A A
H B B ? H
C C T ? T
H D T ? ?

2. reset vs checkout

  • Head : Head는 현재 어디에 위치해서 작업중인지 알려줍니다.
  1. master branch에 2버전을 만든 상황입니다.

flow

  1. 새로운 브랜치 google을 만들고 새로운 버전 3을 만듭니다. 여기서 Head는 google을 가르키고 있습니다.

flow

  • Checkout
    • 2번상황에서 git checkout master를 하게 되면 Head는 2번 버젼을 가르킵니다.
    • git checkout 1을 하게 되면 1번 commit을 가르키게 됩니다. 이런 상황에서는 head가 branch를 가르키지 않고 commit을 가르키는 상황을 detached라고 합니다.
    • 즉 checkout은 Head를 변경하는 것이라고 볼 수 있습니다.

Comments

comments powered by Disqus