개발 이야기/Git

[GIT] git branch란? - branch의 정보를 확인하는 방법

제이온 (Jayon) 2020. 11. 28.

 

 

안녕하세요? 코딩중독입니다.

 

저번 시간에는 branch가 무엇인지 알아보고, branch의 기본 명령어를 익혀 보았습니다.

 

이번 포스팅에서는 branch의 정보를 확인하는 명령어에 대해 설명하겠습니다.

 

 

branch의 특징

우선, 저번 시간 실습을 따라했다면, 브랜치는 master만 존재하고 test.txt은 하나만 있을 것입니다.

 

다시, git branch (브랜치 명)을 이용하여 exp라는 브랜치를 만들어 줍시다.

 

저는 이전의 포스팅에서 브랜치는 독자적인 버전 관리가 가능하다고 하였습니다. 그래서 이번 글에서는 독자적인 버전 관리가 되는 모습을 눈으로 확인해 보려고 합니다.

 

우선, 각각의 브랜치에 대해서 정보가 많아야 보기 좋으므로 master 브랜치에서 test_2.txt와 test_3.txt를 생성하고 내용은 각각 b와 c로 합시다. 그리고 git add와 git commit을 하는데, git commit은 각각 ver.2와 ver.3로 해 주세요.

 

 

 

 

여기까지 하면 됩니다.

 

그리고 git checkout (브랜치 명)을 이용하여 사용하는 브랜치를 exp로 바꿉시다. 이후, git log을 한 번 입력해 봅니다.

 

 

 

 

exp 브랜치는 "ver.1"이라는 commit 메시지가 전송된 이후 생성되었으므로 git log를 하면 "ver.1"에 해당하는 commit 메시지 정보를 갖고 있습니다. 하지만, master 브랜치에 있던 "ver.2"와 "ver.3"의 정보는 알 수 없습니다. master 브랜치 내에서 독자적인 버전 관리를 수행하였기 때문이죠.

 

일단, 여기서도 마찬가지로 test_4.txt와 test_5.txt를 생성하고 각각 내용은 d와 e로 설정합니다. 이후, git add와 git commit을 하는데, 각각의 commit 메시지는 "ver.4"와 "ver.5"로 설정해 주세요.

 

 

 

 

git log을 입력하였을 때 위와 같은 화면이 나오면 됩니다.

 

이제, 다시 git checkout (브랜치 명)을 입력하여 master 브랜치로 이동합시다. 그리고 git log을 입력하면, 당연히 "ver.4"와 "ver.5"에 해당하는 commit 메시지 정보는 없을 것입니다.

 

 

branch의 정보 확인

위와 같이 각각의 브랜치 내에서 git log를 하면 해당 브랜치에서 commit 히스토리를 확인할 수 있습니다. 그렇다면, 전체 브랜치의 commit 히스토리를 볼 수 있는 방법은 없을까요?

 

네, 있습니다. git log --branches --decorate를 사용하면 됩니다. 바로, 콘솔에 입력해 볼까요?

 

 

 

 

우측에 괄호 안에 있는 내용을 유심히 살펴 봅시다. 여기서, HEAD는 나중에 포스팅을 할 것이고 (HEAD -> master)는 현재 checkout되어있는 브랜치인 master 브랜치를 의미합니다.

 

그래서 대략적으로 ver.1 ~ ver.3 까지는 master 브랜치의 히스토리이며, ver.1, ver.4, ver.5는 exp 브랜치의 히스토리임을 뜻합니다.

 

 

하지만, 우측 괄호를 봐가면서 어떤 브랜치의 히스토리인지 판단하는 것은 쉽지 않습니다. 그래서 한 눈에 보기 좀 더 쉽게 만들어주는 명령어가 있습니다. 바로 --graph이죠.

 

한 번 git log --branches --decorate --graph를 입력해 봅시다.

 

 

 

 

오.. 이제는 좀 보이지 않나요? "ver.1" 메시지로부터 시작하여 2개의 가지가 생겼고, 독자적인 버전 관리를 하는 모습이 보입니다.

 

하지만, 아직도 저는 한 눈에 들어오지 않습니다. 여기서 더 간단히 압축하여 보여줄 수가 있는데 git log --branches --decorate --graph --oneline를 입력하면 됩니다.

 

 

 

 

어떤가요? 눈에 이제는 확 들어오지 않나요? 이제는 여러분도 복잡한 브랜치 구조를 간편하게 볼 수 있게 된 것입니다!

 

 

두 branch 간의 비교

위와 같이 브랜치 구조를 보고 싶을 수 있지만, 단순히 두 개의 브랜치를 비교하고 싶을 수도 있습니다.

 

이럴 때는 git log (브랜치 명)..(브랜치 명)을 사용합니다. 저는 git log master..exp를 입력해 보겠습니다.

 

 

 

 

master 브랜치에는 없는 commit 2개를 보여줍니다. 반대로, git log exp..master를 입력해 봅시다.

 

 

 

 

exp 브랜치에는 없는 commit 2개를 보여줍니다.

 

그리고 만약, 여러분이 더 자세한 차이를 보고 싶다면 옵션으로 -p를 추가하면 됩니다. 어떠한 파일이 추가, 삭제, 수정되었는지 확인하실 수 있습니다.

 

또는 git diff (브랜치 명)..(브랜치 명) 명령어를 이용하여 자세한 차이를 볼 수도 있으니, 궁금하신 분은 한 번 실습해 보시길 바랍니다.

 

 

정리

이전 포스팅과 이번 포스팅을 통해서 branch의 중요한 특징인 분기를 배웠습니다. 그리고 graph를 통해서 정말로 버전 관리를 각자 하고 있다는 사실을 할 수 있었습니다.

 

글은 이만 줄이고, 다음 포스팅에서는 병합을 소개하겠습니다.

 

 

참고 사이트

opentutorials.org/course/2708

 

지옥에서 온 Git (새 수업으로 대체) - 생활코딩

이 수업은 GITn 시리즈로 완전히 대체 되었습니다. GITn은 보다 많은 내용을 작은 단위로 쪼개서 선택적으로 공부하실 수 있도록 제작된 수업입니다. 아래 주소를 통해서 GITn 을 접할 수 있습니다.

opentutorials.org

 

 

 

 

댓글

추천 글