Git Branch / Workflow

시디·2022년 2월 23일
0

웹개발

목록 보기
9/9

Branch

여러 개발자가 동시에 서로 다른 작업을 할 수 있게 만들어 주는 기능

브랜치 장점

  • 한 소스코드에서 동시에 다양한 작업을 할 수 있게 해준다.
  • 소스코드의 한 시점과 동일한 상태를 만들고, 브랜치를 넘나들며 작업을 수행할 수 있다.
  • 각각의 브랜치에서 생긴 변화가 다른 브랜치에 영향을 주지 않고 독립적으로 코딩을 진행할 수 있다.

분리된 작업 영역(브랜치)에서 변경된 내용들은 다른 브랜치와 병합(Merge)함으로써 다시 새로운 하나의 브랜치로 모을 수 있다.

브랜치를 사용하여 동시에 여러 작업을 진행할 때의 작업 흐름을 한눈에 파악할 수 있다.

여러 명이서 동시에 작업을 할 때에 다른 사람의 작업에 영향을 주거나 받지 않도록, 먼저 통합 브랜치에서 자신의 작업 전용 브랜치를 만든다.

그리고 각자의 브랜치에서 맡은 영역에 대한 작업을 진행한 후, 작업이 끝난 브랜치는 통합 브랜치에 병합해서 변경 사항을 적용한다. 이를 통해 다른 브랜치의 작업에 영향을 받지 않고 독립적으로 특정 작업을 수행하고 그 결과를 하나로 모아 나가게 된다. 이렇게 작업을 진행하게 되면 '작업 단위', 즉 브랜치로 그 작업의 내용들이 모두 기록되기 때문에 문제가 발생했을 때 원인이 되는 작업을 찾아내거나 그에 따른 대책을 세우기 쉬워진다.

브랜치 종류

  • 통합 브랜치 (Integration Branch) 배포될 소스 코드가 기록되는 브랜치.
    Github Repository를 생성하게 되면 기본적으로 main 브랜치가 생깁니다. (기존 Repository의 경우 master로 되어 있는 곳도 많습니다.)
    해당 프로젝트의 모든 기능이 정상적으로 작동하는 상태의 소스코드가 담겨 있습니다.
  • 피처 브랜치 (Feature Branch) 기능 추가, 버그 수정과 같이 단위 작업을 위한 브랜치.
    통합 브랜치로부터 만들어내며, 피처 브랜치에서 하나의 작업이 완료가 되면 다시 통합 브랜치에 병합하는 방식으로 진행됩니다. 토픽 브랜치라고도 합니다.

브랜치 명령어

새로운 브랜치 생성

  • git branch 새로운 브랜치 이름

새로운 브랜치 생성 후 해당 브랜치로 전환

  • git switch -c 새로운 브랜치 이름
  • git checkout -b 새로운 브랜치 이름

브랜치 목록 확인

  • git branch

브랜치 목록과 각 브랜치의 최근 커밋 확인

  • git branch -v

브랜치 삭제

  • git branch -d 삭제할 브랜치 이름
  • git branch -D 해당 명령어는 병합하지 않은 브랜치를 강제 삭제하는 방법

브랜치 전환

  • git switch 브랜치 이름
  • git checkout 브랜치 이름

브랜치 병합

  • master 브랜치로 dev 브랜치를 병합할 때 (master ← dev)
  1. git checkout master
  2. git merge dev

로그에 모든 브랜치를 그래프로 표현

  • git log --branches --graph --decorate

아직 commit 하지 않은 작업을 스택에 임시로 저장

  • git stash

프로젝트 Workflow

  1. Fork, Clone

    Remote에 생성한 프로젝트 Repository를 각자의 Repository로 가져오기

  2. 브랜치 생성 후 브랜치로 이동

    git checkout -b 새로운 브랜치 이름

    git switch -c 새로운 브랜치 이름

    여기서 HEAD는 현재 위치의 커밋을 가리킨다(현재 작업중인 커밋).

  3. 브랜치 확인

    git branch

  4. 기능 추가 브랜치 생성

    git checkout -b feature/새로운 기능

    git switch -c feature/새로운 기능

  5. Merge

    git chekout(switch) feature

    feature 브랜치로 이동

    git merge feature/새로운 기능

    feature 브랜치로 feature/새로운 기능 브랜치 병합(fast-forwad 방식)

    *fast-forward란 별도의 커밋을 생성하지 않고 feature브랜치가 가리키는 커밋을 feature/새로운 기능 브랜치가 생성한 커밋으로 바꾸는 작업

    git merge commit feature/새로운 기능

    feature 브랜치에 별도의 커밋이 있을 경우 merge commit방식으로 병합

  6. Push

    git push origin feature

    로컬의 작업 내용을 Remote Repository에 업로드(push)

  7. Pull Request

    feature 브랜치의 변경 사항을 팀원들과 리뷰 후 merge하고 싶은 경우 Github의 Rull Request기능을 활용해 반영을 요청(리뷰 후 브라우저에서도 merge 가능)

    PR 메세지를 입력후 Create pull request 버튼 클릭

Git Workflow 개요

기타 명령어

  • rebase : 커밋의 베이스를 다시 정하고 싶은 경우
  • squash : 여러 개의 커밋 로그를 하나로 묶고 싶은 경우
  • revert : 커밋 여러 개의 변경 사항을 취소하고 싶은 경우
  • —amend : 최근 커밋 메시지를 수정하고 싶은 경우
profile
콰삭칩을 그리워하는 개발자 입니다.

0개의 댓글