ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Git Branch 개념설명및 명령어 정리
    CS/Git 2023. 6. 28. 22:18
    반응형

     

    ¶ Branch 란?

    소프트웨어를 개발할 때에 개발자들은 동일한 소스코드를 함께 공유하고 다루게 된다. 동일한 소스코드 위에서 어떤 개발자는 버그를 수정하기도 하고 또 다른 개발자는 새로운 기능을 만들어 내기도 한다. 이와 같이 여러 사람이 동일한 소스코드를 기반으로 서로 다른 작업을 할 때에는 각각 서로 다른 버전의 코드가 만들어 질 수 밖에 없다.

    이럴 때, 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능이 바로 'Branch'이다. 각자 독립적인 작업 영역(저장소) 안에서 마음대로 소스코드를 변경할 수 있다. 이렇게 분리된 작업 영역에서 변경된 내용은 나중에 원래의 버전과 비교해서 하나의 새로운 버전으로 만들어 낼 수 있다.

    한마디로 독립적으로 어떤 작업을 진행하기 위한 개념이다.

     

    https://nulab.com/learn/software-development/git-tutorial/git-collaboration/

     

    또한 이렇게 만들어진 Branch는 다른 Branch와 Merge함으로써, 작업한 내용을 다시 새로운 하나의 Branch로 모을 수 있다. 아래 그림을 보면, Branch를 사용하여 동시에 여러 작업을 진행할 때의, 작업 흐름을 한눈에 파악할 수 있다.

     

    https://nulab.com/learn/software-development/git-tutorial/git-collaboration/

     

    여러 명이서 동시에 작업을 할 때에 다른 사람의 작업에 영향을 주거나 받지 않도록, 먼저 메인 브랜치에서 자신의 작업 전용 Branch를 만든다. 그리고 각자 작업을 진행한 후, 작업이 끝난 사람은 Master Branch에 자신의 Branch의 변경사항을 적용한다. 이렇게 함으로써 다른 사람의 작업에 영향을 받지 않고 독립적으로 특정 작업을 수행하고 그 결과를 하나로 모아 나가게 된다. 이러한 방식으로 작업할 경우 '작업 단위', 즉 Branch로 그 작업의 기록을 중간 중간에 남기게 되므로 문제가 발생했을 경우 원인이 되는 작업을 찾아내거나 그에 따른 대책을 세우기 쉬워진다.

     

    ※ 'Master Branch' 란?
      저장소를 처음 만들었을 때 생기는 기본 작업 Branch, 따로 Branch 설정을 하지 않으면 모든 작업은 기본 Master에서 이루어 진다.

     

    ※ 'HEAD' 란?
      HEAD란 현재 사용 중인 Branch의 선두 부분을 나타내는 이름이다. 기본적으로 Master의 선두부분을 나타낸다. HEAD를 이동하면, 사용하는 Branch가 변경된다. '~(틸드)', '^(캐럿, 삽입기호)', 숫자를 뒤에 붙여 몇 세대 앞의 Commit을 가리킬 수 있다.

     

    https://nulab.com/learn/software-development/git-tutorial/git-collaboration/

     


     

    ① Git Branch

    git branch
    git branch -r (원격 저장소의 Branch 조회)
    git branch -a (-a 또는 -all, Local과 원격 저장소의 Branch를 모두 조회할 수 있는 옵션)

     

        Branch 목록을 조회하는 명령어이다. '*'가 붙어있는 Branch가 현재 선택된 Branch이다.

     

    ② Git Branch [Branch명]

    git branch [Branch명]

     

        새로운 Branch를 생성하는 명령어이다.

     

    ③ Git Checkout/Switch [Branch명]

    git checkout [Branch명]
    git checkout -b [Branch명] (Branch 생성과 동시에 Checkout을 하는 옵션)
    git switch [Branch명]
    git switch -c [Branch명] (Branch 생성과 동시에 Checkout을 하는 옵션)

     

        이동할려는 Branch명을 써서 Branch를 전환하는 명령어이다. 예전 버전에서는 checkout으로 거의 모든 작업이 이루어 졌지만, 하나의 명령어에 너무 여러 기능이 집약되어 있어 이동 전용 명령어인 switch가 생겼다.

     

    ④ Git Merge [Merge할 Branch]

    git checkout master
    git merge test_branch

     

        Branch를 병합(Merge)하는 명령어이다. master branch에 test_branch라는 Branch를 Merge하고 싶을 때는 위의 예시와 같이 Merge될 Branch로 이동하여 Merge할 분기된 Branch명을 써주면 된다.

     

    ⑤ Git Branch d/-D [Branch명]

    git -branch -d [Branch명]
    git branch -D [Branch명] (강제삭제 옵션)

     

        Branch를 삭제하는 명령어이다. 강제삭제 옵션은 정상적으로 Merge가 이루어 지지 않았거나, 충돌이 해결되지 않은 Branch는 삭제하려고 할 때 오류를 발생시켜 삭제가 되지 않을 때 사용하는 옵션이다.

     


     

    위에서 Branch를 Merge하는 명령어를 살펴봤는데, Git에서는 병합을 위한 명령어가 하나 더 있다.

     

    Git Rebase [Merge될 Branch] 

    git checkout test_branch
    git rebase master
    git rebase --continue (충돌이 났을 때 문제되는 부분을 수정하고 다시 rebase 선언할 때 쓰는 옵션)

     

        git merge 명령어 때와는 다르게 Merge할 Branch로 이동하여 Merge될 Branch명을 rebase 선언 해준다. git merge와의 차이점은 병합되었을 때 Commit History가 한 줄로 깔끔히 정리된다는 것을 알 수 있다. 이해를 돕기위한 이미지를 첨부한다.

     

    https://www.linkedin.com/pulse/what-git-merge-difference-between-rebase-shruthi-rajkumar/

     


     

    ¶ 그외 명령어

     

    ▶ Git Diff: Branch끼리 다른 부분을 비교하는 명령어

    git diff master test_branch

     

     

    반응형

    'CS > Git' 카테고리의 다른 글

    Git Commit 변경 명령어 정리  (0) 2023.06.29
    Git 초기설정및 명령어 정리  (0) 2023.06.19
Designed by Tistory.