Git Branch - 깃 브랜치

2022. 3. 15. 16:44카테고리 없음

Branch

  • 여러 개발자들이 동시에 독립적으로 다양한 작업을 할 수 있게 만들어 주는 기능
  • 각자 독립적인 작업 영역(저장소)안에 마음대로 소스 코드를 변경할 수 있음
  • 분리된 작업 영역에서 변경된 내용은 나중에 원래의 버전과 비교해서 하나의 새로운 버전으로 만들 수 있음
  • 브랜치들을 병합함으로써, 작업한 내용을 다시 새로운 하나의 브랜치로 모을 수 있음
  • 브랜치를 작업 단위로 하면 작업 기록을 남겨 문제 발생 시, 원인이 되는 작업을 찾거나 대책을 세우기 쉬움
  • master branch
  • 저장소를 처음 만들면 바로 있는 브랜치
  • 새로운 저장소에 새로운 파일을 추가 하거나, 추가한 파일을 변경하여 그 내용을 저장하는 것은 모두 master라는    브랜치를 통해 처리함

브랜치 종류

 

메인 브랜치(Main Branch)

  • master branch 

 - 배포 가능한 상태만을 관리

 - 커밋할 때에는 태그를 사용하여 배포 번호를 기록

 

  • develop branch

 - 통합 브랜치 역할

 - 평소에는 이 브랜치를 기반으로 개발을 진행

 

 

통합 브랜치(Integration Branch)

  • 언제든지 배포할 수 있는 버전을 만들 수 있는 브랜치
  • 늘 모든 기능이 정상적으로 동작하는 안정적인 상태를 유지해야함

 

 

토픽 브랜치(Topic Branch)(Feature Branch)

  • 버그 수정, 기능 추가 같은 단위 작업을 위한 브랜치
  • 통합 브랜치로부터 만들어 냄
  • 이 브랜치에서의 작업은 공유할 필요가 없음, 원격으로 관리하지 않음

 

 

릴리즈 브랜치(Release Branch)

  • 버그를 수정하거나 새로운 기능을 포함한 상태로 모든 기능이 정상적으로 동작하는지 확인하는 브랜치
  • 브랜치 앞에 'release-' 를 붙임
  • 릴리즈를 위한 최종적인 버그 수정등의 개발을 수행
  • 배포 가능한 상태가 되면 master 브랜치로 병합 시키고, 병합한 커밋에 릴리즈 번호 태그를 추가

 

 

핫픽스 브랜치(Hotfix Branch)

  • 배포 버전에 긴급하게 수정을 해야 할 필요가 있을 경우, master브랜치에서 나오는 브랜치
  • 필요한 부분만 수정 후 다시 master브랜치에 병합하여 이를 배포 

 


브랜치 전환

 

  • checkout 명령어를 통해 실행하여 원하는 브랜치로 전환 가능
  • checkout실행하면 브랜치 안에 있는 마지막 커밋 내용이 작업 트리에 펼쳐짐
  • 브랜치 전환 후 실행한 커밋은 전환된 브랜치에 추가됨

 

HEAD

  • 현재 사용 중인 브랜치의 선두 부분(기본적으로 master브랜치의 선두 부분)
  • 현재 작업중인 브랜치의 가장 최신 커밋을 가리킴
  • 커밋 지정 시 ~ 나 ^을 사용하면 현재 커밋으로부터 특정 커밋의 위치를 가리킬 수 있음 

 

stash

  • 파일의 변경 내용을 일시적으로 기록해두는 영역
  • 작업 트리와 인덱스 내에서 아직 커밋하지 않은 변경을 일시적으로 저장해 둘 수 있음
  • stash에 저장된 변경 내용은 나중에 다시 불러와 커밋할 수 있음

 


브랜치 통합

 

merge

  • 여러개의 브랜치를 하나로 모음
  • 변경 내용의 이력이 모두 그대로 남아 있어서 이력이 복잡해짐
  • 병합을 하면 합쳐진 브랜치의 커밋 메시지가 중복으로 쌓이게 됨
  • 커밋 순서를 바꾸지 않음
  • 존재하는 브랜치가 변경되지 않음
  • 새로운 merge commit을 생성

merge / 출처: https://www.atlassian.com/ko/git/tutorials/merging-vs-rebasing

 

rebase

  • 새로운 브랜치의 이력이 master브랜치 뒤로 이동하게 됨. 이력이 하나의 줄기로 이어짐
  • master 브랜치에 커밋들이 합쳐져서 master브랜치에 재배치(rebase)됨
  • 이력은 단순해지지만, 원래의 커밋 이력이 변경됨
  • 정확한 이력을 남겨야 할 때에는 사용 금지
  • 병합을 하면 브랜치의 커밋 메시지가 시간 순서대로 합쳐짐

rebase / 출처: https://www.atlassian.com/ko/git/tutorials/merging-vs-rebasing


출처

https://www.atlassian.com/ko/git/tutorials/merging-vs-rebasing

https://backlog.com/git-tutorial/kr/intro/intro1_1.html
https://heekangpark.github.io/git/vcs
https://planbs.tistory.com/entry/Git-%EC%9E%91%EC%97%85-%ED%8A%B8%EB%A6%AC%EC%99%80-%EC%9D%B8%EB%8D%B1%EC%8A%A4
https://git-scm.com/book/ko/v2/Git-%EB%B8%8C%EB%9E%9C%EC%B9%98-%EB%B8%8C%EB%9E%9C%EC%B9%98%EC%99%80-Merge-%EC%9D%98-%EA%B8%B0%EC%B4%88
https://www.lainyzine.com/ko/article/git-stash-usage-saving-changes-without-commit/
https://velog.io/@kwonh/Git-Rebase%EB%9E%80
https://hajoung56.tistory.com/5
https://math-coding.tistory.com/178
https://www.nobledesktop.com/learn/git/what-is-git
https://goddaehee.tistory.com/217
https://niklasjang.tistory.com/21