데브코스 TIL - Day 5
23년 11월 20일 강의를 들은 내용과 추가로 더 학습한 내용을 기록한 글입니다.
브랜치 이름 규칙
메인 브랜치 : 사용자들이 사용하는 버전
메인 브랜치는 사용자들이 사용하는 버전이기때문에, 브랜치를 이용해 프로젝트를 복제한 뒤에 기능을 개발하거나 오류를 수정해야함!
메인 브랜치에 바로 개발/오류 수정 등을 하면 큰일남!!!
■ 브랜치 5종류
- main(master): 서비스를 직접 배포하는 역할
- feature(기능): 기능별로 개발하는 브랜치
- develop(개발): feature에서 개발된 내용을 저장하는 브랜치
- release(배포): 배포 하기 전 내용을 QA(품질 검사)하기 위한 브랜치
- hotfix(긴급 수정): main 브랜치로 배포를 하고나서 버그가 생겼을 때 빨리 고치기 위한 브랜치
■ 이름 규칙 예시
- 기능 개발: feature/login, feature/select-product
- 출시 준비: release-1.3, release-1.4
- 긴급 수정: hotfix-1.3.2, hotfix-1.2.1
※ 브랜치를 만든다고 브랜치가 생성되는 것은 아님, 브랜치를 생성하고 새로운 커밋을 1개 이상해야 브랜치로 이용할 수 있음
■ 브랜치 전략
Git flow (깃 플로우)
브랜치를 나누는 방법에 대한 분류(전략)
Git flow에서 가장 많이 사용되는 두가지 전략
◎ fast-forward
git merge
모든 커밋을 변경없이 한 줄로 합칠 수 있는 상태
브랜치의 모든 커밋 내역이 병합 브랜치에 그대로 들어감
■ 순서
┌A 브랜치
에서 B 브랜치
를 생성한 시점부터,
├ A 브랜치
에는 아무런 추가 구현을 하지 않고
├ B 브랜치
만 추가 구현한 뒤
├ B 브랜치
와 A 브랜치
를 합치면
└ A 브랜치
에 B 브랜치
내용이 합쳐짐
◎ non-fast-forward
git merge --no-off
옵션
브랜치가 생성되었던 기록이 남지 않음
여러 커밋을 하나로 합친 후에 병합 브랜치에 병합하기 대문에 깨끗한 커밋 내역을 유지할 수 있음
◎ 3-ways
일반적으로 가장 많이 사용하는 전략
■ 순서
┌A 브랜치
에서 B 브랜치
를 생성한 시점부터,
├ A 브랜치와 B 브랜치 모두 추가 구현을 한 뒤
├ B 브랜치
와 A 브랜치
를 합치면
└ A 브랜치와 B 브랜치가 서로 비교하여 바뀐 것을 정리하여 합치는 전략
브랜치병합하기
병합이란?
A 브랜치에 있는 작업 내용과 B 브랜치의 작업 내용을 합칠 때 사용
브랜치 병합을 하려면 PR을 해야함!
PR이란?
pull request 약어
내용을 가져와 업데이트를 한 뒤, 다시 복제를 해온 브랜치에 내가 변경한 내용을 적용해달라고 요청을 보내는 것
■ pull request 하는 방법
1.깃허브에 들어가 Pull Request 버튼을 누르기
2.PR message 작성하고, create pull request 버튼 누르기
※ PR 메세지에 작성하는 내용은 매우 중요! 잘 작성하는 것이 좋음
3.깃허브가 자동으로 충돌이 일어나는지 확인, 병합하기
4.merge한 브랜치 삭제하기
4-1.merge한 후 깃허브와 깃 동기화하기
4-1-1.브랜치를 삭제한 내역을 내 로컬과 동기화하기
git fetch -p
4-1-2.동기화를 하더라도 로컬에 남아있는 브랜치는 별도로 삭제를 해야함
git checkout 브랜치명
git branch -d 브랜치명
❗ 만약 오류가 발생한다면?
- 깃허브에서 merge한 내역이 로컬에 동기화가 되지 않았기 때문에 발생하는 것.
git pull
명령어를 사용해 커밋 내역도 동기화하기- 다시 로컬에서 브랜치 삭제하기
git branch -d 브랜치명
Git merge할 때 충돌이 일어난다면?
merge를 할 때 서로 같은 이름 파일을 수정하고 수정한 부분이 겹칠 때, 병합하려고 한다면 충돌이 일어남
1.충돌이 일어난다면 깃허브에서 충돌내용과 충돌을 수정할 수 있는 버튼을 제공해줌
3.충돌 내용을 수정하고, Resolve conflicts 버튼을 눌러 충돌 해결하기
브랜치관련 명령어
git branch -r
: 원격저장소(Github)가 가지고 있는 브랜치 목록git push 깃허브저장소별칭 브랜치명
: 특정 브랜치로 커밋 내용을 푸시하기git fetch -p
: 깃허브 브랜치 목록과 동기화 하는 명령어git branch -d 브랜치명
: 로컬에서 브랜치 삭제하는 명령어
출처 사이트 -https://bbbicb.tistory.com/41