Branch 란?
- Branch : 분기된 가지(다른 차원)
- 프로젝트를 하나 이상의 모습으로 관리해야 할 때
예) 실배포용, 테스트서버용, 새로운 시도용
- 여러 작업들이 각각 독립되어 진행될 때
예) 신기능 1, 신기능 2, 코드개선, 긴급수정...
각각의 차원에서 작업한 뒤 확정된 것을 메인 차원에 통합
브랜치 생성하기
git branch 브랜치명
브랜치 확인하기
git branch
현재 디렉토리 앞에는 * 붙어있음
브랜치로 이동하기
git switch 브랜치명
메인으로 이동할 때는 git switch main 명령어 실행
예시)
브랜치 생성과 동시에 이동하기
git switch -c 브랜치명
예시)
브랜치 삭제하기
git branch -d
삭제할 브랜치에 다른 브랜치로 적용되지 않은 내용의 커밋이 있을 시에는 -D(대문자) 옵션으로 강제 삭제하기(지워질 브랜치에만 있는 내용의 커밋이 있을 경우. 즉, 다른 브랜치로 가져오지 않은 내용이 있는 브랜치를 지울 때)
gti branch -D
예시)
브랜치 이름 바꾸기
git branch -m (기존 브랜치명) (새 브랜치명)
예시)
브랜치 결과 확인하기
git log 명령어로는 현재 위치한 브랜치의 내역만 볼 수 있다.
소스트리로 브랜치 내역 전체를 보는 것을 추천하지만 터미널에서 확인하고 싶다면
git --all --decorate --oneline --graph 명령어로 확인할 수 있다.
예시)
브랜치 합치기
merge : 두 브랜치를 한 커밋에 이어붙인다.
- 브랜치 사용내역을 남길 필요가 있을 때 적합한 방식
rebase : 브랜치를 다른 브랜치에 이어붙인다.
- 한 줄로 깔끔히 정리된 내역을 유지하기 원할 때 적합한 방식
- 이미 팀원과 공유된 커밋들에 대해서는 사용하지 않는 것이 좋다.
merge로 브랜치 합치기
main과 add-coach 브랜치를 merge로 합친다면
git switch main 명령어를 실행하여 디렉토리 위치를 main으로 변경한 후
git merge add-coach 명령어 실행
소스트리에서 확인해보면 main과 add-coach 브랜치가 합쳐진 것을 확인할 수 있다.
합치는 작업이 끝는 브랜치는 삭제를 해준다.
git branch -d 브랜치명
add-coach 브랜치를 삭제한 후 브랜치들을 확인해보면 삭제가 잘 된것을 확인할 수 있다.
소스트리에서도 add-coach 브랜치는 삭제됨을 확인
rebase로 브랜치 합치기
어떤 브랜치를 main 브랜치로 rebase를 한다면 해당하는 브랜치로 위치를 이동해야한다.(merge때와는 반대임)
git switch 브랜치명 후에
git rebase main 명령어 실행
main 브랜치가 뒤쳐져 있는 문제를 해결하기 위해
git switch main 명령어 실행하여 main으로 이동한 뒤
git merge 브랜치명 명령어 실행
main 브랜치가 상단에 올라와있는 것을 확인한 뒤
브랜치 삭제
예시)
본인은 new-teams 브랜치를 main 브랜치로 rebase를 하겠다.
그 다음 소스트리를 확인해보면 new-teams 브랜치의 초록색 가지가 main 가지로 합쳐져서 파란색이 되었다. 그런데 여기서 main 브랜치가 new-teams보다 뒤에 있다.
이 문제를 해결하기 위해서는 merge를 사용해야한다.
main 브랜치로 이동 후 git merge new-teams 명령어를 실행시켜 new-teams의 시점으로 fast-forward 한다.
소스트리를 확인해보면 main 브랜치 상단에 잘 올라와있는 것을 확인할 수 있다.
그리고 나서 new-teams의 브랜치를 삭제한다.
브랜치 충돌 해결하기
merge 브랜치 충돌 해결
merge로 브랜치를 합치다가 충돌이 나면 아래와 같이 <<<<<< 꺽새 모양이 나오는 것을 볼 수 있다.
main 내용은 A인데 브랜치의 내용은 B라는 것을 보여주며 어떤 것을 선택할 것인지 아니면 새로운 값을 입력할 것인지 물어보는 것
만약 지금 결정하기 어렵다면 git merge --abort 명령어로 merge를 중단할 수 있다.
결정을 하고 해결이 가능하다면 충돌 부분을 수정한 뒤
git add . 명령어 실행 후 git commit 명령어 실행 후 :wq => 병합 완료하기
rebase 브랜치 충돌 해결
merge 브랜치 충돌은 브랜치 가지가 main 브랜치로 하나로 합쳐지기 때문에 commit 작업을 한 번만 해주면 되지만 rebase는 모든 커밋마다 충돌을 해결해주어야한다.
만약 충돌 해결이 당장 하기 어려울 경우에는
git rebase --abort 명령어로 중단을 하면 된다.
해결이 가능하다면 충돌 부분을 수정한 뒤
git add . 명령어 실행 후
git rebase --continue 명령어를 충돌이 모두 해결될 때까지 반복한다.
충돌이 다 해결이 되었다면 main 브랜치가 뒤에 있기 때문에 main으로 위치를 이동 시킨후(git switch main)
git merge 브랜치명 명령어를 실행하여 마무리를 하고 브랜치를 삭제한다.
'Git,GitHub' 카테고리의 다른 글
[Git] 기존 Project에 버전 관리에 포함되어 있는 파일 명령어로 삭제 (0) | 2022.07.18 |
---|---|
[GitHub] GitHub_#2 (0) | 2022.06.12 |
[GitHub] GitHub_#1 (0) | 2022.06.07 |
[Git] Git_#2 (0) | 2022.06.07 |
[Git] Git_#1 (0) | 2022.06.07 |