한 소스코드에서 동시에 다양한 작업을 할 수 있다
소스코드의 한 시점과 동일한 상태를 만들고, 브랜치를 넘나들며 작업할 수 있다.
각각의 브랜치에서 생긴 변화가 다른 브랜치에 영향을 주지 않고 독립적 작업이 가능
위 처럼 master(main)을 뿌리로 가지를 뻗어 나갈 수 있고,
병합을 통해 하나로 합쳐질 수 있음
각자 영역에서 작업 후 통합 브랜치에 적용 >> 문제가 되는 원인을 찾기 쉽다
통합 브랜치 : 배포될 소스 코드, 모든 기능이 정상적으로 작동하는 상태의 소스코드
피처 브랜치 : 기능 추가, 버그 수정과 같이 작업을 위한 브랜치, 작업이 완료되면 통합 브랜치에 병합
git branch 이름
생성git switch -c 이름
브랜치 생성 후 해당 브랜치로 전환git checkout -b 이름
브랜치 생성 후 해당 브랜치로 전환git branch
git branch -v
브랜치 목록과 최근 커밋 확인git branch -d 이름
브랜치 삭제git branch -D
병합하지 않은 브랜치를 강제 삭제git switch 이름
브랜치 전환git checkout 이름
브랜치 전환git checkout master
git merge dev
git log --branches --graph --decorate
git stash
rebase vs merge
merge 변경 내용 이력이 그대로 남음
rebase branch base를 이동시킴
프로젝트 workflow
Local에서 브랜치를 생성해 작업하고, 작업이 끝나면 push를 통해 remote 레포지토리로 push
그리고 project upstream repository에 반영되도록 PR
작업 중 upstream에 변경사항이 있다면 local로 pull받아 적용해야함
rebase
https://backlog.com/git-tutorial/kr/stepup/stepup7_5.html
https://backlog.com/git-tutorial/kr/stepup/stepup7_6.html
git 크라켄 - GUI툴
git cherry-pick <커밋 해시>
다른 브랜치의 커밋 중에서 골라서 지금 브랜치로 가져옴
https://backlog.com/git-tutorial/kr/stepup/stepup7_4.html
vs extension
git graph