목표 : branch의 개념에 대해 알아보고 branch를 분할&병합해보자.
branch
여러 사람이 동일한 소스코드를 기반으로 서로 다른 작업을 할 때에는 각각 서로 다른 버전의 코드가 만들어 질 수 밖에 없다.
여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능이 바로 '브랜치(Branch)'
branch를 나누는 이유?
현업에서 프로젝트를 개발하는 과정에 있어서 하나의 branch를 가지고 작업을 하는 것은 리스크가 굉장히 크다고 볼 수 있다.
많은 개발자들이 하나의 프로젝트에 투입되어 개발을 하게 될 것이고, 그 중 한사람이라도 git push를 잘못하게 되었을 시에는 업로드되어있는 내용을 pull 하는 뒤에 개발자들이 곤란한 상황을 맞이하기 때문이다.
이를 대비하여 branch를 master 하나로 작업하는 것이 아니라 여러개로 나누어서 작업하는 것을 권장하고 있다.
각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있기 때문.
보통 현업에서는 master(main), dev, signup(예) 등 브랜치를 3종류로 나누어서 작업을 하고
master > dev > signup(signup_001~) 순으로 배치하여 작업을 한 후, signup 브랜치에서 푸쉬한 내용을 dev에 추가 (병합)함으로써 혹시 모를 오류에 대비한다고 한다.
branch 실제 사용
명령어 | 의미 |
git branch | 내가 만든 브랜치들의 목록을 살펴볼 수 있다. |
git branch 브랜치이름 | 새로운 branch를 만든다. |
git branch -b 브랜치이름 | 브랜치를 생성하면서 이동 |
git branch -d 브랜치이름 | branch를 삭제한다. |
git checkout 브랜치이름 | 내가 사용할 브랜치를 지정(이동) |
git push origin 브랜치이름 | 설정한 브랜치로 업로드 |
git log --oneline --branches | 각 브랜치의 커밋을 한 줄로 조회 |
git branch -r | 원격저장소의 브랜치들을 확인 |
git checkout -t 브랜치이름 | 원격저장소의 동일한 이름의 브랜치를 생성하고 해당 브랜치로 checkout |
현재 브랜치 - main(master)
- git branch dev, git branch signup_001 입력 - dev, signup_001 브랜치 생성
- git branch 입력 - 내가만든 branch 목록을 살펴보기 위해 // main , dev, signup_001
- git checkout signup_001 - 이제부터 업로드할 브랜치를 지정 , 브랜치가 main → signup_001 로 변경됨
- git add 파일이름 - 수정된 파일을 add 명령어를 통해 Staging Area로 옮김 ( add명령어를 사용하기전에 'git diff 파일이름'으로 변경된 부분을 확인가능, add명령어 사용하는 순간 확인불가능)
- git commit -m "메시지 내용" - commit 명령어를 통해 local repository로 옮김
- git push origin 브랜치이름 - 브랜치이름으로 깃허브에 push
- 깃허브 레파지토리에서 main, signup_001이 따로 분리되어 있는 것을 확인

이미 push가 되어있는 레파지토리에 접근하는 상황:
- git clone URL - 입력하면 레파지토리의 이름으로된 폴더가 생성
- cd 폴더이름 - 생성된 상위폴더로 이동
- git remote update - 원격 저장소의 브랜치에 접근하기위해 원격 저장소를 갱신
- git branch -r - 원격 저장소의 브랜치 확인
- git checkout 브랜치이름 - 브랜치를 지정하고 원격저장소에 있는 브랜치 내용의 코드들을 불러옴
실제 사전스터디의 브랜치는 총 7개로 나뉘어 질 예정.
main / dev / 랜딩페이지 / 로그인 / 회원가입 / 메인페이지 / 세부페이지
각 하위 5개 브랜치들이 각자 작업을 한 후 dev에 병합, 마지막 배포를 할때 main에 병합 및 업로드 하는 것으로 예정되어 있음.
브랜치 병합하기
브랜치 병합은 하위 브랜치들이 작업을 완성한 후 dev에 각자 내용들을 병합하는 것
브랜치 병합을 했을 때, head에 해당하는 브랜치에 병합이 된다. 이미지에서는 issue1에 병합이 되는 것.
예를 들어 signup_001 브랜치의 작업 완료후
순서 | 명령어 | 내용 |
signup_001 브랜치의 작업 완료 상황 | ||
1 | git checkout dev | dev로 브랜치 지정 > head가 dev에 위치 |
2 | git merge signup_001 | signup_001를 dev에 병합 |
signup_001에 있던 내용이 dev로 들어가게 된다. |
문제점.
signup_001을 dev branch에 병합하게 되면 signup_001은 사라진다고 들은 거 같은데 레파지토리에 브랜치는 그대로 유지가 되어있음.
현재상태로는 어떤 것을 잘못했는지 파악 불가능. 뭘까..? 따로 삭제해야되는 걸까?
'GIT' 카테고리의 다른 글
핵심 쏙쏙 Git - 2주차 (0) | 2022.11.11 |
---|---|
Git에 대해 알아보자 (0) | 2022.10.29 |