Repository
프로젝트단위로 생성
소스코드가 저장되어 있는 여러개의 branch가 모여있는 디스크상의 물리적 공간
local과 remote로 구분됨
Checkout
특정 시점이나 Branch의 소스코드로 이동하는 것을 의미
Checkout 대상 - Branch, Commit, Tag
Checkout을 통해 과거 여러 시점의 코드로 이동이 가능
Stage
작업할 내용이 올라가는 임시저장영역
이 영역을 이용하여 작업한 내용중 commit에 반영할 파일만 선별하여 commit을 수행할 수 있음
commit
작업할 내용을 local repository에 저장하는 과정
각각의 commit은 의미있는 변경단위이고, 변경에 대한 설명을 commit log로 남김
권장 - commit을 아끼지 마세요, save point같음
참고 - commit단위나 commit log format을 정해놓은 회사나 팀도 있음(빌드 서버를 사용하는 경우
tag
임의의 commit 위치에 쉽게 찾아갈 수 있도록 붙여놓은 이정표
tag가 붙은 commit은 commit id(version) 대신 tag name 으로 쉽게 checkout가능
push
local repository의 내용 중, remote repository에 반영되지 않은 commit을 remote repository로 보내는 과정
권장 - push 하는 순간 다른 개발자들도 영향을 받음, 검증되지 않은 코드는 push 하지 않도록 함.
pull - 반대
remote repository에 있는 내용 중, local repository에 반영되지 않은 내용을 가져와서 local repository에 저장하는 과정
다른 팀원이 변경하고 push한 내용을 local repository에 가져올 수 있음
참고 - push 과정에서 conflict(충돌)이 일어나서 push가 거절된 경우, pull을 통해 remote reopository의 변경 내용을 local repository에 반영하여 conflict를 해결한 뒤 다시 push를 시도해야 함.
branch
특정 시점(commit단위)에서 분기하여 새로운 commit을 쌓을 수 있는 가지를 만드는 것
개발의 주축이 되는 branch를 master branch(혹은 main branch) 라고 함
모든 branch는 최종적으로 다시 master branch에 merge(병합)되는 형식으로 진행 됨
merge
branch의 반대개념으로 하나의 branch를 다른 branch와 합치는 과정
merge되는 두 branch는 주종관계가 성립. 예 - dev branch를 main branch에 merge
merge 되는 과정에서 conflict(충돌)이 발생하는 경우
diff 를 수정하여 conflict를 해결한 뒤 merge 를 진행 할 수 있음