[Github] branch란?

이지민·2024년 12월 24일

깃허브

목록 보기
9/13

1. branch가 등장하게 된 이유

  • branch를 사용하지 않아도 협업은 가능함

  • 영리한 git은 커밋 순서로 인해 push가 거부(reject)될 때, pull을 받은 뒤 다시 push하면 커밋 순서를 정리한 뒤 병합(merge)함.

    • 컴퓨터 1 : a → c → d
    • Github : a → c → d
    • 컴퓨터 2 : (a → c → q) ➡️ (a → c→ d →q)
  • 하지만❗같은 파일의 같은 라인의 코드를 건드린다면 골치 아픈 conflict(충돌)이 발생❗→ 개발자는 conflict를 직접 해결해줘야 함!

  • 이러한 불편한 점을 해결하기 위해 branch라는 개념이 등장



2. branch란?

  • 하나의 작업공간에서 계속 pull 받고 push하기도 번거롭고 conflict가 발생하면 되게 머리 아픈데 이걸 어떻게 해결하지?
    • 처음부터 작업공간을 나눠서 각자 작업한 뒤에 나중에 한번에 합치자!
      (branch의 핵심 아이디어)


  • merge(병합): 여러 개의 서로 다른 독립된 공간(브랜치)에서 개발된 코드를 하나의 브랜치로 합치는 것.

  • 위의 사진에서는 c 커밋을 기점으로 새로운 브랜치인 gitrini를 만들어 각자 따로 작업 한 뒤 합치고 있음.

  • 이때도 같은 파일의 같은 라인을 수정했다면 conflict 해결을 해줘야 함.

    • Therefore, 협업을 할 때는 파일이 잘 분리가 되어있는 것이 좋다!
  • Github에서 merge를 요청하는 것을 PR(Pull Request)이라 부름.

  • PR이 승인되면 브랜치가 합쳐지며 merge가 완료됨.



3. branch 관련 명령어

  • branch 생성 및 이동

    $ git branch
    # 현재 생성되어 있는 브랜치의 목록을 본다
    $ git branch newFeature
    # newFeature라는 새로운 브랜치를 만든다.
    $ git checkout(switch) newFeature
    # newFeature라는 브랜치로 이동한다.
    $ git checkout -b newFeature
    -> (git branch newFeature + git checkout newFeature)
    # newFeature라는 브랜치를 만들고 이동
    $ git checkout commit_id -b new_feature
    -> (git checkout commit_id + git branch new_feature + git checkout new_feature)
    # 특정 커밋 시점(commit_id)으로 이동 후, 그 커밋에서 new_feature 브랜치 생성
  • branch 삭제

    $ git branch -D newFeature
    # newFeature라는 브랜치를 삭제한다.
  • github에 특정 branch를 push하거나 github에서 특정 branch를 가져오기

    $ git push origin 브랜치이름
    # 특정 브랜치를 깃허브에 푸시한다.
    $ git pull origin 브랜치이름
    # 브랜치를 깃허브에서 가져와서 최신화한다.

인용 자료 출처
코딩은 실전이다! - Git알못을 위한 깃린이코스(Git, Github 실습위주)
(무료) 매우쉽게 알려주는 git & github

profile
모든 것을 다 기억할 수는 없기에 기록합니다.

0개의 댓글