Git 심화 브랜치(Branch)

Heena·2022년 8월 8일
0
post-thumbnail

브랜치(Branch)란?

브랜치(Branch)란 버전 관리 시스템에서 나무가 가지에서 새 줄기를 뻗듯이 여러 갈래로 퍼지는 데이터 흐름을 의미한다.

Git은 버전 관리를 시작하면 기본적으로 master라는 브랜치가 만들어진다. 사용자가 커밋할 때마다 master 브랜치는 최신 커밋을 가리킨다.

새 브랜치를 만들면 기존에 저장한 파일을 master 브랜치에 그대로 유지하면서 기존 파일 내용을 수정하거나 새로운 기능을 구현할 파일을 만들 수 있다.

  • 분기(branch)하다
    : master 브랜치에서 뻗어 나오는 새 브랜치를 만드는 것
  • 병합(merge)하다
    : 분기했던 브랜치를 master 브랜치로 합치는 것

브랜치 관리

1. 새 브랜치 만들기(git branch)

'git branch' 명령어를 통해 브랜치를 확인하고, 명령어 뒤에 {브랜치명}을 입력하여 입력한 브랜치명에 해당하는 브랜치를 만들 수 있다. 'git branch'를 통해 확인되는 브랜치 중 브랜치명 앞에 * 표시가 있는 브랜치가 현재 작업 중인 브랜치를 나타낸다.

git branch {브랜치명}

2. 브랜치 간 이동(git checkout)

저장소의 기본 브랜치는 master이므로 브랜치의 병합 또는 삭제 등의 명령을 위해서는 master 브랜치로 이동 후 실행해야 한다.

git checkout {브랜치명}

3. 브랜치 병합(git merge)

'git merge' 명령어를 통해 브랜치를 자동으로 합칠 수 있다. 그러나 같은 문서의 같은 위치를 수정했을 경우, 충돌(conflict)가 발생한다. 여러 개의 파일을 병합한 경우, 충돌이 발생한 파일 외 다른 파일들은 자동으로 master 브랜치에 병합된다. 충돌이 발생한 경우, 충돌 해결 후 다시 커밋해야 한다.

git merge {브랜치명}

4. 브랜치 삭제(git branch -d)

'git branch' 명령어의 -d 옵션을 사용하여 브랜치를 삭제할 수 있다. 단, 병합하지 않은 브랜치의 경우 오류 메시지가 나타나므로 -D (대문자 D) 옵션을 사용해야 한다. 브랜치를 완전 삭제하는 것이 아니므로 동일한 명의 브랜치를 새로 만들 경우, 이전에 삭제했던 브랜치가 나타난다.

git branch -d {브랜치명}

5. 수정 중인 파일 보류(git stash)

'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)

git log --oneline --branches --graph

브랜치 간 비교

왼쪽에 있는 브랜치A를 기준으로 오른쪽에 있는 브랜치 B와 비교한다. 따라서, 브랜치A에는 없고 브랜치B에만 있는 커밋을 보여준다.

git log {브랜치A명}..{브랜치B명}

수정 파일 일괄 스테이징

git add .
profile
Hello, I am Heena :)

0개의 댓글