팀 개발을 위한 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 | |
---|---|---|
특징 | 병합 커밋 생성 | 현재 커밋들을 수정하면서 대상 브랜치 뒤에 재배치함 |
장점 | 한 번만 충돌 발생 | 추가 커밋이 생성되지 않아 히스토리가 깔끔함 |
단점 | 추가 커밋이 생성됨 | 여러 번 충돌이 발생할 수 있음 |