September 28, 2020
커밋 = 디렉토리에 있는 모든 파일에 대한 스냅샷을 Git 저장소에 기록하는 것
Git은 가능한 한 커밋을 가볍게 유지하고자 하기 때문에 이전 버전과 다음 버전의 변경 내역 (delta) 을 저장
→ 대부분의 커밋은 해당 커밋 위의 부모 커밋을 가리킨다
git commitGit 커밋은 매우 가볍고 전환도 매우 빠르다!
브랜치는 특정 커밋에 대한 참조(reference) → 브랜치도 매우 가볍다
브랜치를 많이 만들어도 메모리나 디스크 공간에 부담이 되지 않는다
브랜치는 하나의 커밋과 그 부모 커밋들을 포함하는 작업 내역
git branch [브랜치명] //브랜치 만들기
git checkout [브랜치명] //새 브랜치로 이동브랜치를 합치는 방법에는 몇 가지가 있다. merge는 그 중 하나
git merge : 두 개의 부모(parent)를 가리키는 특별한 커밋을 만들어 낸다
예시

git merge bugFix
git checkout bugFix
git merge master
bugfix가 master의 부모쪽에 있었기 때문에 간단히 bugfix를 master가 붙어있는 커밋으로 이동시킴브랜치를 합치는 두 번째 방법은 리베이스!
리베이스 : 커밋들을 모아서 복사한 뒤, 다른 곳에 떨궈 놓는 것
예시

bugFix 브랜치에서의 작업을 master 브랜치 위로 직접 옮기기git rebase master
여기서 C3 커밋은 아직 어딘가에 남아있고 (그림에서 흐려짐), C3'는 master위에 올려놓은 복사본
master는 아직 그대로라는 문제가 있음

master 브랜치를 선택한 상태로
git rebase bugFix
master가 bugFix의 부모쪽에 있었기 때문에, 단순히 그 브랜치를 더 앞쪽의 커밋을 가리키게 이동
Reference