Branch
- 독립적으로 작업을 진행하기 위한 개념이다.
- 브랜치는 다른 브랜치의 영향을 받지 않아 여러 작업을 동시 진행 가능
생성
git branch 브랜치명
삭제
git branch -d 브랜치명
조회
git branch
이동(사용)
git switch 브랜치명
생성, 이동
git switch -c 브랜치명
브랜치명 변경
git branch -m 기존브랜치명 새브랜치명
- 이전에 이동을 배울 땐 checkout 이었으나 이것의 용도가 매우 다양해 switch, restore로 분리해서 사용함
Branch 합치는 방법 2가지
1. merge
특징
- branch의 흔적을 남기며 합침
- merge 시 merge 했다는 commit 흔적을 남기며 합침
merge 사용법
git merge 대상브랜치명
- main branch와 sub branch가 있다고 가정했을 때 sub branch의 내용을 main에 merge 하고 싶을 경우, main branch에서 git merge sub 처럼 입력해야지 merge 수행됨
명령어
git merge 서브대상브랜치명
가정 1. main, new-branch가 있다
2. new-branch[서브 대상 브랜치]의 내용을 main[주 대상 브랜치]에 붙인다
위의 상황에서 merge 방법
1. git switch main (main [주 대상 브랜치]로 이동)
2. git merge new-branch (merge 수행)
merge 주의사항
- branch가 엄청 많아지면 보기 힘들어짐
2. rebase
특징
1. branch 흔적을 남기지 않고 합치는 곳 이후에 branch의 작업 내역을 뒤이어 붙임
rebase 사용법
명령어
git rebase 주대상브랜치명
가정 1. main, new-branch가 있다
2. new-branch[서브 대상 브랜치]의 내용을 main[주 대상 브랜치]에 붙인다
위의 상황에서 rebase 방법
1. git switch new-branch (new-branch [서브 대상 브랜치]로 이동)
2. git rebase main (main 수행)
rebase 주의사항
1. 충돌 문제
다른 브랜치의 작업을 이어 붙이는 작업이라 다른 브랜치와 현재 브랜치의 작업 내역이 다르면 충돌 해결을 해야한다.
충돌을 적절히 해결한 후
git add .
를 통해 변경사항을 적용한 뒤
git rebase --continue
를 통해 rebase를 계속 진행할 수도 있고
git rebase --abort
를 통해 rebase를 중단할 수도 있다.
만약 변경내용이 모두 rebase되는 branch(main)과 모두 같다면 commit내역에 다른 브랜치의 커밋 내역이 남지 않는다.
2. branch 추적 위치 문제
new-branch를 main 위에다가 rebase 했기에 main보다 new-branch가 더 위에 있는 문제가 생긴다.
원래의 의도대로라면 main,new-branch가 최상단의 커밋 내역을 가리키고 있어야 할텐데 말이다.
git switch main
git merge new-branch
를 수행하게 된다면 main과 new-branch가 같은 위치를 가리키게 된다.
참고사항
합치고 더이상 수정할게 없는 브랜치는 삭제해줘도 됨
삭제하면 그 브랜치에서 작업은 불가능한데
그 브랜치에서 작업내역으로는 이동이 가능함
'DevOps > Git' 카테고리의 다른 글
[Git] 원격저장소 (0) | 2022.10.23 |
---|---|
[Git] merge /rebase 충돌(conflict) (0) | 2022.10.23 |
[Git] revert / reset (0) | 2022.10.23 |
[Git] 기초 사용법 복습 (0) | 2022.10.23 |
[Git] Git 초기설정 (VisualStudio Code) (0) | 2022.10.22 |