[TIL / Git] checkout, branch, merge
코드뭉치 버리기
- 작업 후 커밋하기 전에 소스트리의 '코드뭉치 버리기' 기능을 사용하면 변경사항을 마지막 커밋시점으로 되돌릴 수 있다.
- 터미널에서는
checkout
이라는 명령어로 사용한다.
checkout
- 특정 커밋이나 브랜치로 돌아가고 싶을 때 사용한다.
- 소스트리에서는 브랜치명 혹은 커밋명을 더블클릭하는 것으로 사용할 수 있다.
branch
- 기존 내용을 유지한 채 새로운 내용을 추가하고 싶을 때 사용한다.
- master 브랜치에 있는 내용은 내버려두고 특정 커밋부터 새로 개발할 수 있다.
- 한 번에 하나의 브랜치에서만 작업할 수 있고, 이를 현재 브랜치 혹은 헤드 브랜치라 한다.
브랜치를 만들고 새로 커밋하게 되면 이렇게 가지가 생성된다.

- 작업은 무조건 브랜치에서 하고, 최종본은 항상 master에 있어야 한다.
merge
- 하나의 브랜치를 현재 브랜치와 합치는 것을 말한다.
→ 예를 들어 헤드 브랜치가 master일 때, version2 브랜치를 병합하면 version2의 내용이 master에 반영된다.
병합하기 1(fast-forward)
- 헤드 브랜치에 변경사항이 없고, 병합 대상 브랜치가 헤드로부터 시작된 경우다.
- 아주 쉽게 병합할 수 있다.

병합하기 2
- 헤드 브랜치에 추가적인 커밋이 생기는 경우, 병합하면서 충돌이 발생할 가능성이 높다.
- 서로 다른 파일에서 작업하면 충돌이 발생하지 않는다.

미사용 브랜치 삭제
- merge한 후에, 헤드 브랜치가 아닌 경우 간단하게 삭제할 수 있다.
- 브랜치를 삭제했을 경우 사라지는 커밋이 있는지 여부를 확인해야 한다.
P.S.
✍️ 깃을 그냥 백업 용도로만 생각했던 내가 얼마나 무지했는지 실감이 된다😅
Reference