팀 개발을 위한 Git, GitHub 시작하기(정호영, 진유림 지음)으로 공부한 내용을 정리한 글입니다.
branch
없이 커밋 한다면 기본 branch
인 master
의 커밋이 됨master
커밋은 한 줄로, 시간 순으로 쌓이며 각 커밋들은 이전 커밋을 가리키고 있음branch
라는 새로운 작업 줄기를 생성하여 병렬적으로 연결해야 함branch
는 일종의 포인터로 해당 branch
에서 생성한 커밋 중 가장 최신 커밋을 가리킴branch
가 가리킬 수도 있음git checkout
을 통해 Master Commit 2로 이동했다면 HEAD
는 Master Commit 2를 가리키고 있음HEAD
가 master branch
의 포인터와는 다른 커밋을 가리킨다면 HEAD
는 Detached HEAD
상태가 됨master branch
에는 직접 커밋하지 않음branch
는 feature/[기능 이름]
으로 생성함feature branch
에서 기능 개발이 끝나면 master branch
에 합침feature branch
는 삭제branch
를 생성할 때 기준(base)이 될 커밋으로 이동하기 위한 기능Branch 합치기(merge
)는 두 버전(커밋)의 합집합을 구하고 하나의 branch
에 속하도록 만드는 것을 말함
branch
가 가리키도록 함Conflict
이 발생함Conflict
이 발생할 경우를 대비해 일반적으로 먼저 feature branch
로 master branch
의 커밋을 병합함feature branch
로 병합했을 때 Conflict
이 발생하면 Conflict
을 해결하고 커밋 한 뒤, 해당 커밋을 master branch
와 병합함Conflict
를 해결한 커밋은 Fast-forward
로 master branch
와 합쳐짐Fast-forward
도 아니고 Conflict
도 발생하지 않는 경우 두 커밋을 합집합한 새로운 Merge Commit
이 생성됨branch
병합을 요청하는 메시지를 보내는 GitHub의 기능base branch
로 compare branch
의 커밋이 병합되는 형태pull request
가 승낙되면 GitHub를 통해 병합이 진행되므로 병합 후 내 로컬 저장소로 pull
하는 과정이 필요함1.2.6 -> 2.0.0
)1.2.6 -> 1.3.0
)1.2.6 -> 1.2.7
)Release
: 프로그램을 사용자들이 쓸 수 있도록 배포하는 것Tag
: 코드 버전 등 커밋에 간단한 태그를 붙일 때 사용하는 기능