[Github] Git Branch

Hood·2024년 9월 4일

Github

목록 보기
3/5
post-thumbnail

✍ 간단한 깃 허브 사용법

Github에 계속 작업을 하다보니 한번 정리해보면 좋겠다는 생각에 작성합니다.
본 필자는 Mac 환경에서 작업하고 있음을 알립니다.


Git Branch

이번 포스트는 Branch에 대해 알아봅시다.
우리가 작업을 하다보면은 프로젝트는 개념적으로 거대한 나무입니다.
이러한 의미에서 각 분기를 뜻하는 것은 Git에서 Branch입니다.
또한 분기라는 개념을 통해서 프로젝트의 소스코드를 다양한 버전으로 손 쉽게 작업할 수 있고,
새로운 기능 개발 혹은 수정의 경우 기존 코드를 보존하면서 새로운 분기에서 작업할 수 있습니다.

Git Flow 전략


출처 : https://leetrue.hashnode.dev/branch-merge-strategy

Git branch 전략 중 우아한형제들 기술블로그에 정의된 Git Flow 전략을 설명하려한다.
위 사진을 보면 브랜치에 따라서 main, release, hotfix, develop, feature
많은 브랜치 등이 있는 것을 볼 수 있다.
각 브랜치 마다 용도가 다르며, 그렇다는 뜻은 다른 사람과 작업을 할 때 병렬적 작업을 할 수 있어
역할을 분배하여 작업할 수 있다는 것을 알 수 있다.
그렇기에 브랜치 전략을 활용한다는 것은 다른 팀원과 효율적으로 작업을 할 수 있다는 것을 뜻한다.
나눠진 브랜치마다 어떤 역할을 하는지 알아보자.


Main branch

main은 쉽게 말해 바로 출시 가능한 코드만 모아두는 브랜치라고 생각하면 된다.
따라서 바로 배포 가능한 코드를 모아두어야 하며
각 버전을 태그를 이용해 표시한다.

  • 즉 출시 가능한 프로덕션 코드만 모아두는 메인 브랜치

Develop branch

develop(dev)에서는 다음 버전 개발을 위한 코드를 모아두는 브랜치이다.

  • 다음 버전 개발을 위한 코드를 모아두는 브랜치

Feature branch

develop 브랜치와 다르게 Feature에서는 세분화하여 한 기능을 개발하기 위한 브랜치이다.
Develop 아래 Feature branch를 생성하며 기능 개발 후에 다시 Devleop으로 Marge한다.
그리고 이름을 지을 때 feature/기능 name으로 생성한다.

  • 하나의 기능 개발을 위한 브랜치

Release branch

Release 에서는 내가 만든 소프트웨어의 배포를 준비하기 위한 브랜치이다.
Develop 아래 생성하며 버전 이름 등의 데이터를 수정하거나 배포 전 사소한 버그를 수정하기 위해 사용된다.
배포 준비 완료 시 Main 과 Develop 모두 Merge를 한다.

  • 소프트웨어 배포를 준비하기 위한 브랜치

Hotfix branch

이미 배포된 소프트웨어에 문제가 생겼다면 이 Hotfx 브랜치를 사용한다.
Main 아래 생성을 하며 문제가 해결되면 다시 Main과 Develop에 Merge를 한다.

  • 이미 배포된 버전에 문제가 발생할때 사용하는 브랜치

Merge

그렇다면 이제 Branch Merge(병합)에 대해 궁금해 질 것이다.
브랜치를 세분화해서 생성하다 보면 해당 기능을 만들었을 때 상위 디렉토리와 합쳐야 할 상황이 나올 것이다.
이때 해야하는 작업이 Merge이며 상위 브랜치와 충돌이 나지 않게 주의하며 합쳐야 한다.


Git 명령어

현재 프로젝트의 분기를 알아내는 명령어

  • git branch

새로운 분기를 생성하는 브랜치 생성

  • git checkout -b [생성할 브랜치 이름]

분기를 이동하는 명령어

  • git checkout [이동할 브랜치]

    위 사진을 보면 git branch가 main 이였는데 checkout을 통해 develop으로 이동한 것을 확인 할 수 있다.

직전 분기로 이동하는 명령어

  • git checkout -

브랜치 병합

  • git merge [병합 브랜치]

브랜치의 변경 정보를 함축해서 보여주는 명령어

  • git log --online

다른 사람의 브랜치를 업데이트를 해서 가져와야 할 때

  • git pull [가져올 branch 이름]

pull이란?

협업을 하고 있다고 가정을 하고
만약 내 팀원이 같은 브랜치에서 작업을 하고 있을 때 업데이트 된 내용에 대해서는
git pull을 통해 땡겨와야 한다.
그 때 사용하는 것이 pull이며 github에 올라가 있는 프로젝트 변경사항을 자동으로 병합해준다.

tip. 만약 내가 작업한 work flow를 보고싶다면

  • git log --pretty=format:"%h = %an , %ar : %s" --graph
    커밋을 로그를 확인하는 명령어 이다.
    여기서는 내가 브랜치를 생성하고 병합한 과정과 그에 해당하는 커밋들을 보여준다.

tip. 내가 한 커밋에 대해 되돌리고 싶다면

  • git reset --soft HEAD^
    위 명령어를 작성하면 마지막 커밋을 되돌려준다.

📌결론

이렇게 branch에 대해서 알아봤는데
해당 필자는 git flow 전략만 사용해봤으며 이외에 다른 전략은 다음 포스트에서 다뤄보겠다.
또한 merge 충돌 시에 대책 등을 정리해봐도 괜찮겠다.
다음 프로젝트의 성공을 위해 잘 기억해야겠다. 👊

profile
달을 향해 쏴라, 빗나가도 별이 될 테니 👊

0개의 댓글