팀 개발을 위한 Git, GitHub 시작하기(정호영, 진유림 지음)으로 공부한 내용을 정리한 글입니다.

base commit)을 가리키고 있는 트리 그림으로 표현할 수 있음branch는 특정 커밋과 그 조상들을 지칭branch는 단순히 커밋 객체 하나를 가리키는 포인터feature branch)hotFix branch 혹은 bugFix branch)merge와 rebase 테스트branch의 최근 커밋을 가리키는 포인터detached HEAD: checkout 등에 의해 branch의 최근 커밋이 아닌 다른 커밋을 가리키는 헤드 HEAD~<숫자>: HEAD~는 헤드의 부모, HEAD~n은 헤드의 n번째 조상을 의미HEAD^<숫자>: HEAD^는 헤드의 부모, HEAD^n은 헤드의 n번째 부모를 의미. 병합 커밋처럼 부모가 둘 이상인 커밋에서만 의미가 있음$git tag -a -m <message> <tag> [branch or checksum]
-a: 주석이 있는 태그 생성 옵션branch나 checksum을 생략하면 헤드에 태그 생성
feature branch를 생성하여 다른 작업을 수행하던 중, 이전에 완료한 커밋의 코드를 수정해야할 상황이 발생
hotFix branch를 생성하여 코드 수정
hotFix branch를 master branch에 병합master branch의 최신 커밋을 base로 hotFix branch의 커밋을 생성했기 때문에 fast-forward 병합이 발생hotFix branch는 삭제함
feature branch는 2번 커밋을 base로 작업 중이었기 때문에 4번 커밋을 병합해야 함Conflict이 발생할 수 있으며 Confilct을 해결한 병합 커밋이 추가로 생성됨| 3-Way Merge | rebase | |
|---|---|---|
| 특징 | 병합 커밋 생성 | 현재 커밋들을 수정하면서 대상 브랜치 뒤에 재배치함 |
| 장점 | 한 번만 충돌 발생 | 추가 커밋이 생성되지 않아 히스토리가 깔끔함 |
| 단점 | 추가 커밋이 생성됨 | 여러 번 충돌이 발생할 수 있음 |