커밋된 코드를 복사한 뒤 원래 코드가 변경될 우려 없이 여러 작업을 동시에 진행 할 수 있게 하는 기능
브랜치의 장점

다른 작업을 하다 다시 합치는 것도 가능

배포될 코드가 기록되는 브랜치.
레포지토리를 생성하면 기본적으로 main 통합 브랜치가 생성( 옛날에 만든 레포지토리는 master 브랜치)
기능 추가, 버그 수정과 같이 단위 작업을 위한 브랜치
통합 브랜치로부터 만들어내며, 피처 브랜치에서 하나의 작업이 완료되면 다시 통합 브랜치에 병합하는 방식으로 진행한다.
git branch 새로운 브랜치 이름
git switch -c 새로운 브랜치 이름
git checkout -b 새로운 브랜치 이름
git branch
git branch -v
git branch -d 삭제할 브랜치 이름
git branch -D // 병합하지 않은 브랜치를 강제 삭제하는 방법이다
git stash // 일단 이걸로 숨겨둬야 commit과 달라져서 브랜치를 못바꾸는 상황이 발생하지 않음
git switch 브랜치 이름
git checkout 브랜치 이름
git checkout master
git merge dev
git log --branches --graph --decorate
git stash
git reset HEAD [file]
git commit HEAD^
git reset HEAD~1 // 옵션에 따라 돌아가는곳 이후 커밋 내용은 staging되게 할 수도 있고 없앨 수도 있다
git revert HEAD~1 // 이후 커밋 기록도 남아 있다
git cherry-pick [commit number] // commit number는 8자리만 써주면 된다
git reflog
git reset HEAD@{index}
