브랜치(Branch)란 버전 관리 시스템에서 나무가 가지에서 새 줄기를 뻗듯이 여러 갈래로 퍼지는 데이터 흐름을 의미한다.
Git은 버전 관리를 시작하면 기본적으로 master라는 브랜치가 만들어진다. 사용자가 커밋할 때마다 master 브랜치는 최신 커밋을 가리킨다.
새 브랜치를 만들면 기존에 저장한 파일을 master 브랜치에 그대로 유지하면서 기존 파일 내용을 수정하거나 새로운 기능을 구현할 파일을 만들 수 있다.
'git branch' 명령어를 통해 브랜치를 확인하고, 명령어 뒤에 {브랜치명}을 입력하여 입력한 브랜치명에 해당하는 브랜치를 만들 수 있다. 'git branch'를 통해 확인되는 브랜치 중 브랜치명 앞에 * 표시가 있는 브랜치가 현재 작업 중인 브랜치를 나타낸다.
git branch {브랜치명}
저장소의 기본 브랜치는 master이므로 브랜치의 병합 또는 삭제 등의 명령을 위해서는 master 브랜치로 이동 후 실행해야 한다.
git checkout {브랜치명}
'git merge' 명령어를 통해 브랜치를 자동으로 합칠 수 있다. 그러나 같은 문서의 같은 위치를 수정했을 경우, 충돌(conflict)가 발생한다. 여러 개의 파일을 병합한 경우, 충돌이 발생한 파일 외 다른 파일들은 자동으로 master 브랜치에 병합된다. 충돌이 발생한 경우, 충돌 해결 후 다시 커밋해야 한다.
git merge {브랜치명}
'git branch' 명령어의 -d 옵션을 사용하여 브랜치를 삭제할 수 있다. 단, 병합하지 않은 브랜치의 경우 오류 메시지가 나타나므로 -D (대문자 D) 옵션을 사용해야 한다. 브랜치를 완전 삭제하는 것이 아니므로 동일한 명의 브랜치를 새로 만들 경우, 이전에 삭제했던 브랜치가 나타난다.
git branch -d {브랜치명}
'git stash' 명령어를 통해 현재 수정한 파일을 따로 보관하여 커밋을 보류할 수 있다.
# 수정 파일 숨기기
git stash
'git stash list' 명령어를 통해 보관한 파일을 stash 목록에서 확인할 수 있다. 선입후출(First In, Last Out) 저장 방식으로 스택(stack)이라고도 표현한다. 따라서, 가장 최근 보관 파일이 stash@{0}에 보관되고, 제일 먼저 보관한 파일(First In)이 stash@{n}에 보관된다.
# 숨김 목록 확인
git stash list
'git stash pop' 명령을 통해 가장 최근 보관한 파일부터 되돌릴 수 있다. 또는 'git stash apply' 명령을 통해 파일을 되돌리지만 목록은 그대로 유지할 수도 있다.
# (목록을 유지하지 않고) 최근 숨김 파일 되돌리기
git stash pop
# (목록을 유지하고) 최근 숨김 파일 되돌리기
git stash apply
또는 'git stash drop' 명령을 통해 가장 최근 보관한 파일을 삭제할 수도 있다.
# 최근 숨김 파일 삭제
git stash drop
git log --oneline
git log --oneline --branches
git log --oneline --branches --graph
왼쪽에 있는 브랜치A를 기준으로 오른쪽에 있는 브랜치 B와 비교한다. 따라서, 브랜치A에는 없고 브랜치B에만 있는 커밋을 보여준다.
git log {브랜치A명}..{브랜치B명}
git add .