메인 브랜치(아래의 기능이 필요할 때 메인 브랜치에서 복사함)
1. 기능 개발
2. 출시 준비
3. 긴급 수정
main/master?
원래는 master라는 이름을 썼음
main나뭇가지에서 복사를 해서 다른 나뭇가지 만드는 형식.
main나뭇가지의 원래 이름 : master
근데 2020년인가에 깃허브가 master를 main으로 바꿔버림 (그래서 둘다 씀)
"메인브랜치" <- 이 version까지가 제대로 돌아가는(현재 사용중인) 브랜치다.
현재 v1.2.0이라고 가정하자.
기능 개발
: feature/login(로그인기능),
feature/select-product(상품조회기능) 라는 식으로 표기함
출시 준비
: release-1.3, release-1.4(발매, 배포 준비) 식으로 표기
긴급 수정
: hotfix-1.2.1(버그수정, 긴급업데이트)식으로 표기
// 브랜치 만드는 실습
git branch feature/login
git branch feature/select-product
<- 브랜치 만들기
git checkout feature/login <- 그 브랜치로 이동
git checkout feature/select-product <- select-product 브랜치로 이동
git checkout - <- 이전 브랜치로 이동
git branch <- 현재 존재하는 브랜치 살피기
(기존에 있던 dev브랜치 지우기)
git branch -d dev
git branch라고 다시 치면 dev브랜치가 브랜치 목록에서 사라졌음을 알 수 있음
병렬로 기능이 구현되어 있는지 확인하기
git checkout feature/select-product
-> 어라 이상하다!
원격에 있는 브랜치 확인하는 방법:
git branch -r
원격에 브랜치를 추가하고 로컬의 브랜치를 원격브랜치에 연결하고 싶다면?
= 깃허브에 브랜치 생성하고 깃 브랜치 복제하기(깃에 만들어둔 브랜치를 원격 브랜치로 복제 -> git push 깃허브저장소별칭 깃브랜치명)
깃 브랜치 전략이란?
-> 깃 플로우라고도 부름.
전략 <- 크게 2가지 분류
1. fast-forward (사실 잘 안 쓰임)
A branch에서 B branch를 생성한 시점부터,
B branch와 A branch를 합치면
-> A branch에 B branch가 붙으면 그냥 끝남
2. 3-ways
일반적으로 가장 많이 사용하는 전략
A branch에서 B branch를 생성한 시점부터,
B branch와 A branch를 합치면
-> A branch와 B branch가 서로 비교하여 바뀐 것을 정리하여 합치는 전략
사실상 fast-forward와 3-ways가 합쳐져서 사용됨
병합이란?
브랜치를 생성한다는 건, "협업"을 위한 것.
그래서 우리는 주로 브랜치 병합(추가 가지 -> base가지)을 "깃허브"에서 함
main 브랜치 보호
추가 브랜치 -> main 브랜치 병합 시켜줘! = Pull Request
충돌 일어나나? 자동으로 확인을 해줌
*PR 메세지 중요함
merge
merge commit도 존재.
추가 브랜치 삭제
git fetch -p : 가지치기 한다는 뜻. 깃허브에서 삭제된 브랜치가 깃에서는 살아있는 것을 나올 때 치면 delete됨. (다시 깃허브의 브랜치를 깃 브랜치에 동기화 시키는 명령어)
다른 브랜치로 넘어가서 깃허브에서 삭제된 브랜치를 깃에서 삭제하려고 했을 때 : merge가 full로 안됐어! 하는 경고가 뜸
-> 알고보니 깃허브에서는 merge가 됐지만 깃에서는 merge가 안되어서 뜨는 것
-> 그렇다면 git pull origin main(origin에서 main 땡겨오기)해줘서 깃의 커밋목록도 동기화를 시켜주자.(merge커밋이 올라옴)
-> 이후 delete시도하면 브랜치 삭제 됨.
(요약)

((복습))
1. 브랜치 병합 후 -> 깃허브에서 브랜치 날리기
2. 터미널 와서 git fetch -p : 깃허브 레포지토리와 로컬 상황 동기화
3. git checkout main : 로컬에서 메인브랜치로 이동
4. 메인브랜치에서 git pull origin main (원격의 메인브랜치 상황을 로컬에 끌어오기)
5. git branch -d feature/2 : 방금 깃허브에서 메인에다가 브랜치 병합해서 없어진 브랜치(feature/2)를 로컬에서도 브랜치 없애버리기
6. git branch -> 현재 브랜치 보면서 브랜치가 잘 없어졌는지 확인하기