git

이승현·2022년 11월 13일

웹 개발

목록 보기
18/20

브랜치(branch)

커밋된 코드를 복사한 뒤 원래 코드가 변경될 우려 없이 여러 작업을 동시에 진행 할 수 있게 하는 기능

브랜치의 장점

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

다른 작업을 하다 다시 합치는 것도 가능

일반적인 브랜치 이름별 기능

  • master/main 항상 최신의 안정적 프로그램
  • dev 베타버전/모든 개발 로그들이 쌓이는 곳, 새로운 feature 기능들이 완성되고 머지되는 곳
  • feature 기능을 추가할 때 마다 따는 브랜치
  • test
  • hotfix 급한 수정
  • release 배포할 때 쓰는 테스트용 브랜치

branch 작업 순서

  1. 통합 브랜치에서 자신의 작업 전용 브랜치 생성
  2. 각자의 브랜치에서 맡은 작업을 수행 후 통합 브랜치에 병합해서 변경 사항을 적용
  3. 이렇게 하면 작업 단위로 내용이 모두 기록되기 때문에 문제 발생 시 원인 분석에 용이

브랜치 종류

  • 통합 브랜치 (Integration Branch)

배포될 코드가 기록되는 브랜치.

레포지토리를 생성하면 기본적으로 main 통합 브랜치가 생성( 옛날에 만든 레포지토리는 master 브랜치)

  • 피처 브랜치 (Feature Branch, 토픽 브랜치)

기능 추가, 버그 수정과 같이 단위 작업을 위한 브랜치

통합 브랜치로부터 만들어내며, 피처 브랜치에서 하나의 작업이 완료되면 다시 통합 브랜치에 병합하는 방식으로 진행한다.

브랜치 명령어

새로운 브랜치 생성

git branch 새로운 브랜치 이름

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

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

브랜치 목록 확인

git branch

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

git branch -v

브랜치 삭제

git branch -d 삭제할 브랜치 이름
git branch -D // 병합하지 않은 브랜치를 강제 삭제하는 방법이다 

브랜치 전환

git stash // 일단 이걸로 숨겨둬야 commit과 달라져서 브랜치를 못바꾸는 상황이 발생하지 않음
git switch 브랜치 이름
git checkout 브랜치 이름

브랜치 병합

  • master 브랜치로 dev 브랜치를 병합할 때 (master ← dev)
  • github 기능으로도 merge할 수 있다.
git checkout master
git merge dev

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

git log --branches --graph --decorate

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

git stash

기타 git 명령어

staging 취소

git reset HEAD [file]

commit 취소

git commit HEAD^

이전 커밋으로 이동

git reset HEAD~1 // 옵션에 따라 돌아가는곳 이후 커밋 내용은 staging되게 할 수도 있고 없앨 수도 있다
git revert HEAD~1 // 이후 커밋 기록도 남아 있다

원하는 커밋 내용만 가져오기

git cherry-pick [commit number] // commit number는 8자리만 써주면 된다

다 뒤엎고 예전으로 되돌리기

git reflog
git reset HEAD@{index}

협업 workflow

profile
매일 꾸준히

0개의 댓글