git

#16 깃(Git) - 새 브랜치에서 커밋하고 브랜치 마다 차이점 확인하기

에이블디 2021. 11. 22. 14:14

안녕하세요 여러분! 에이블디 입니다!

 

이번 시간엔 지난 시간에 이어서 새 브랜치에 커밋을 해보고 각 브랜치마다 차이점을 확인하는 시간을 가져볼 거예요!

오늘도 함께 깃에 대해 공부하도록 하죠!

 

지난 시간에 master 브랜치에서 YAMA 브랜치로 이동한 것 까지 기억하시죠?

이번 시간에는 YAMA 브랜치에 커밋을 해보도록 할게요!

그리고 master 브랜치와 YAMA 브랜치와의 차이점을 확인하기 위해 YAMA 브랜치에 새 텍스트 파일도 하나 생성해 보도록 하겠습니다.

 

일단 기존의 branch.txt 파일에 "YAMA1"이라는 내용을 추가한 후 저장해주세요!

$ vi branch.txt

위와 같은 모습이겠죠?

 

그리고 이번엔 yama.txt라는 새로운 파일을 만들고 여기에도 "YAMA1"이라는 내용을 입력하고 저장합니다.

$ vi yama.txt

새로운 yama.txt 파일은 위와 같겠죠?

 

하나의 수정된 파일과 새로 생성된 파일을 스테이징하고 커밋해야겠죠?

이번엔 git add 뒤에 마침표(.)를 추가해 볼 텐데요 마침표를 추가하면 현재 작업공간에서 수정되거나 추가된 파일을 한꺼번에 스테이지에 올릴 수 있습니다.

두 파일을 한꺼번에 스테이징하고 "YAMA branch 1"이라는 메시지와 함께 커밋해주세요.

$ git add .
$ git commit -m "YAMA branch 1"

2가지 파일이 한 번에 처리된 걸 볼 수 있네요!

 

그럼 커밋이 잘 되었는지 깃 로그로 확인해 볼까요?

지난 시간에 배운 --oneline을 사용하여 확인해 봅시다!

$ git log --oneline

HEAD가 YAMA를 가리키고 있는 것을 보니 현재 YAMA 브랜치에 체크아웃된 상태이고, YAMA 브랜치의 최신 커밋이 "YAMA branch 1"이라는 메시지를 가진 커밋이라는 걸 확인할 수 있습니다.

 

깃 상태를 다른 방법으로 한번 봐 볼까요?

깃 로그 명령어에 --branches 옵션을 추가하면 각 브랜치의 커밋을 함께 볼 수 있습니다!

바로 확인해 볼까요?

$ git log --oneline --branches

결과 화면을 보면 커밋 메시지 왼쪽에 (HEAD -> YAMA), (master), (Lucas, Charlie)라고 표시되어 있는 게 보이시죠?

이 부분을 보고 어떤 브랜치에서 커밋을 했는지 구별할 수 있습니다.

현재 우리는 YAMA 브랜치에서 작업 중이며 YAMA 브랜치의 최신 커밋은 "YAMA branch 1"이고, master 브랜치의 최신 커밋은 master 4, Lucas, Charlie 브랜치의 최신 커밋은 master 3 가 되겠습니다.

 

브랜치와 커밋의 관계를 그래프의 형태로 볼 수 있는데 git log 명령에 --graph 옵션을 추가해 주시면 됩니다.

한번 볼까요?

$ git log --oneline --branches --graph

커밋 내용 왼쪽에 수직선(|)처럼 되어있는 것 보이시나요?

이 수직선이 커밋과 커밋의 관계를 보여 주는 것인데요 그래프를 살펴보면 YAMA 브랜치의 최신 커밋은 "YAMA branch 1"인데, 수직선을 따라 "YAMA branch 1" 커밋의 부모를 찾아가 보면 "master 3" 커밋을 만나게 됩니다.

즉 YAMA 브랜치에서는 "master 3" 커밋 다음에 "YAMA branch 1" 커밋이 만들어졌다는 뜻이죠.

 

그럼 대각선(/)의 의미도 살펴 볼까요?

대각선은 master를 가리키고 있네요?

master 브랜치의 최신 커밋은 "master 4"입니다.

그리고 대각선을 따라가 부모 커밋을 찾아가 보면 YAMA 브랜치와 마찬가지로 "master 3" 커밋이 나오네요!

이것으로 master 브랜치와 YAMA 브랜치는 "master 3" 커밋까지는 같고 그 이후부터는 브랜치마다 다른 커밋을 만들었다는 사실을 알 수 있습니다!

 

지금은 브랜치마다 커밋이 별로 없어서 어떤 차이점이 있는지 쉽게 알 수 있겠지만 브랜치마다 커밋이 점점 쌓여갈수록 브랜치 사이에 어떤 차이가 있는지 일일이 확인하기 어려워지겠죠?

이럴 때 브랜치 이름 사이에 마침표 두 개(..)를 넣어주면 브랜치 사이의 차이점을 쉽게 확인할 수 있습니다.

브랜치 이름과 마침표 사이는 공백 없이 입력하며, 마침표 왼쪽에 있는 브랜치를 기준으로 오른쪽 브랜치와 비교합니다.

그럼 master 브랜치와 YAMA 브랜치 사이의 차이점이 무엇인지 확인해 볼까요?

master 브랜치를 기준으로 두 브랜치 사이의 차이점이 무엇인지 확인해 보려면 다음과 같은 명령어를 작성할 수 있겠네요.

$ git log master..YAMA

결과 화면을 보시면 master 브랜치에는 없고 YAMA 브랜치에만 있는 커밋 "YAMA branch 1" 커밋을 보여주는 걸 확인할 수 있습니다.

 

반대로 YAMA 브랜치를 기준으로 master 브랜치와 비교해 볼까요?

$ git log YAMA..master

결과 화면을 보시면 YAMA 브랜치에는 없고 master 브랜치에만 있는 "master 4" 커밋을 보여주는 걸 확인할 수 있네요!

 

오늘은 다른 브랜치에서 커밋도 해보고 각 브랜치마다 차이점을 확인하는 법을 알아보았습니다!

다음 시간에는 머지(merge)에 대해 알아보도록 할게요!

 

그럼 여러분 다음 시간에 만나요!