Git에서 브랜치(branch)는 코드의 특정 버전을 가리키는 포인터
main
과 master
병렬 개발
버전 관리
안정성
병합(merge)과 충돌(conflict) 관리
git branch
git branch <branch-name>
ex : git branch apple
git switch <branch-name>
git branch <branch-name>
와 git switch <branch-name>
을 한 번에 처리git switch -c <branch-name>
git switch -c emptylist master
라는 코드의 해석master
브랜치에서 뻗어나와서 emptylist branch
생성하면서 이동git branch -d branch_name
git branch -D branch_name
git branch -m new_branch_name
git branch -m old_branch_name new_branch_name
old_branch_name
new_branch_name
master
브랜치에 있고 내가 bye 브랜치를 byebye 브랜치로 바꾸고 싶다면 git branch -m bye byebye
!git commit -am "내용"
git switch -c
branch_name 02c5bab(해시)
- 브랜치 전환 시 변경 사항 커밋 또는 스태시 꼭 하기 !
- 긴 생명주기의 브랜치를 사용하지않기
- master 또는 main 브랜치에서 직접 작업하지 않기
- 너무 많은 변경을 하나의 커밋에 포함하지않기
여러 브랜치에 분산된 코드 변경 사항을 한 브랜치로 합치는 과정
main
은 새로운 커밋이 생기지 않았고 oldsong
은 새로운 커밋이 생긴 상태이다. 여기서 main
에 oldsong
을 합치고싶으면 main으로 위치한 상태에서 oldsong을 merge - main과 oldsong이 병합되어 같은 위치에 있게됨두 브랜치를 병합하는 방법 중 하나로, 이 브랜치들이 공통 조상을 기반으로 작업한 경우 사용
new-song 브랜치에 new/pop과 new/hiphop 브랜치를 생성
new-song 브랜치에 new/pop을 Fast-Forward Merge
(new-song 브랜치에는 새로운 커밋이 없었고 new/pop은 내용을 입력하여 새로운 커밋이 있었기 때문에 Fast-Forward Merge)
new-song 브랜치에 new/hiphop 브랜치를 병합하기 위해 3-Way Merge를 통해 병합
(new/pop과 병합되는 과정으로 변경이 있었고 new/hiphop도 내용변경이 있었기 때문에 3-Way Merge로 병합)
-> 과정 속에서 new-song 브랜치와 new/hiphop 브랜치가 만나게되는 부분이 있기 때문에 새로운 커밋이 생김 (새로운 커밋에 설명을 달아주면 좋다!!)
Git 충돌(conflict)은 두 개 이상의 변경 사항이 Git의 병합 과정에서 서로 충돌할 때 발생하는 문제를 의미
동시에 같은 파일의 같은 부분을 변경했을 때 (같은 라인 코드)
이 문제가 발생코드 변경사항을 비교하고 시각적으로 표시해주는 강력한 도구
특정 브랜치에서 변경사항이 생긴 후 커밋하지 않고 다른 브랜치로 이동시 발생하는 첫번째 시나리오는 변경사항이 이동한 브랜치에 따라옴
두번째 시나리오는 잠재적 Conflict를 예상하여 switching을 거부
-> 변경사항을 커밋하거나 스태싱하여 해결 !
git stash save
git stash pop