깃 허브(GitHub) 브랜치(branch)에 대한 정리

이번에는 GitHub의 Branch에 대해서 정리해봤습니다.
2021.06.29

안녕하세요 클래스메소드 김재욱(KimJaewook)입니다.

깃 허브를 사용하면서 조금 정리가 필요하다 생각이 들어「깃 허브(GitHub) 브랜치(branch)에 대한 정리」라는 블로그를 쓰기로 했습니다.

브랜치(Branch)란?

브랜치란 독립적으로 어떤 작업을 진행하기 위한 개념입니다.

필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있습니다.

깃허브에서는 저장한 파일을 master 브랜치에 그대로 유지하면서 기존 파일을 수정하거나 새로운 기능을 구현한 파일을 만들 수 있습니다.

그림을 보면 중간중간 분기점을 둬서 보라색과 초록색으로 나누어져 가는 것을 볼 수 있습니다. 이것을 바로 브랜치라고 합니다.

또한 이렇게 분기된 브랜치를 master 브랜치에 합칠 수 있는데, 이것을 합병이라고 합니다. 그럼 이제 브랜치를 만들어보도록 하겠습니다.

브랜치(Branch) 생성

브랜치 테스트를 위한 사전작업

먼저 브랜치 테스트를 위한 간단한 작업을 수행합니다.

mkdir manual
cd manual
git init
git -al

먼저 manual 이라는 디렉토리를 만들고, manual을 저장소로 지정합니다.

그리고 ls -al 명령어를 통해 .git이 생성 됐는지를 확인합니다.

vim work.txt
git add work.txt
git commit "work 1"
git log
  • vim 명령어를 통해 work 라는 텍스트 파일을 만듭니다.
  • content 1을 입력하고 저장합니다.
  • 그리고 커밋을 해줍니다.
  • 마지막으로 git log 명령어를 통해 제대로 커밋이 됐는지 확인합니다.
vim work.txt
git commit -am "work 2"
vim work.txt
git commit -am "work 3"

추가적으로 work 2를 커밋하기전에 텍스트에 content 1, content 2를, work 3을 커밋하기전에 텍스트에 content 1, content 2, content 3을 입력하고 커밋합니다.

브랜치 생성과 테스트

이제 브랜치를 만들어 보겠습니다.

먼저 현재 어떠한 브랜치가 있는지 확인해봅니다.

git branch라는 명령어를 입력합니다.

그럼 현재 master 라는 브랜치가 하나 만들어져있는 것을 볼 수 있습니다. master는 저장소를 만들면 기본적으로 생성되는 브랜치입니다.

그럼 master 이외의 브랜치를 만들어 보도록 하겠습니다.

git branch apple

apple 브랜치를 만들고 다시 git branch 명령어를 입력해보면 apple 브랜치가 생성된걸 볼 수 있습니다.

브랜치 옆 * 표시는 현재 master 브랜치에서 작업을 하고 있다는것을 의미합니다.

그 외에 git log를 입력해보면 master 옆에 apple가 추가된 것을 볼수 있습니다

HEAD -> 가 가르키는 master 가 현재 작업하고 있는 브랜치입니다.

git branch google
git branch ms
git branch

그럼 추가적으로 google, ms 브랜치를 만들어 봅시다.

git log를 해보면 master, ms, google , apple 브랜치가 생성된것을 확인할 수 있고 현재 master 에서 작업을 하고 있습니다. 추가적으로 ms, google, apple 또한 master와 동일하게 work 3가 커밋되어진 상태입니다.

vim work.txt
git commit -am "master content 4"
git log --oneline

그럼 커밋을 할 경우 어떻게 변하는지 확인해보겠습니다. 여기서 log 명령어에 --oneline 옵션 붙이면 한줄에 한 커밋씩 보여줍니다.

master는 좀 전에 커밋한 master content 4를 가르키고 있고, 나머지 ms, google, apple는 work 3를 가르키고 있습니다.

그럼 현재 master 브랜치에서 다른 브랜치로 이동해보겠습니다.

git checkout apple

해당 명령어를 입력하면 master 에서 apple로 브랜치가 바뀌게됩니다.

git log를 통해 확인해보면 work 3를 가르키고 있습니다.

내용물을 살펴봐도 content3 까지만 내용이 입력되어 있습니다. apple이 master 브랜치에서 분기된 상태로, 가장 최근에 커밋한 master content 4의 영향을 받지 않는다는 걸 알 수 있습니다. 다음은 깃 브랜치 병합에 대해서 알아보도록 하겠습니다.