Git & GitHub

깃과 브랜치 - 브랜치 생성 및 활용

Player-Hyeok 2024. 2. 7.

기존 파일에 새로운 기능을 추가해야 할 경우가 자주 있을 것이다.
이 때 제대로 동작하는 소스는 그대로 둔 채 기능을 추가한 새로운 버전을 따로 만들어 관리하고, 이 새로운 버전을 기존 버전에 더할 수 있으면 굉장히 편리할 것이다.
이것이 '브랜치 branch' 라는 기능이 생겨난 이유이다.
 

깃과 브랜치
깃과 브랜치

 

브랜치란?

브랜치는 나뭇가지라는 뜻으로, 버전 관리 시스템에서 나무가 가지에서 새 줄기를 뻗듯이 여러 갈래로 퍼지는 데이터 흐름을 말한다. 깃 설치 시 main 이나 master 등으로 네이밍 해 두었을 것이다.
 


 
브랜치는 커밋을 가르키는 포인터와 비슷하다고 생각하면 된다.
c1, a1 등은 각각의 커밋을 의미하며, 메인 브랜치를 가만히 둔 체 새로운 브랜치를 분기하여 수정 작업 후 다시 main 브랜치와 합치게 하여 새로운 G 와 같은 브랜치를 만드는 것이다.
 
 

브랜치 만들기 및 이동하기

1. 실습 상황 만들기
1) cd ~
2) mkdir manual
3) cd manual
4) git init
5) ls -al : .git 디렉터리가 만들어 졌는지 확인
6) vim work.txt - I 입력, content 1 작성 후  esc, :wq 저장 후 나가기
7) git add work.txt
8) git commit -m "work 1"
9) git log
10) vim work.txt - content 2 추가 입력 후 저장
11) git commit -am "work 2"
12) vim work.txt - content 3 추가 입력 후 저장
13) git commit -am "work 3"
14) git log 로 최종확인
 

2. 새 브랜치 만들기

초기 설명서를 만들었는데 고객사 별로 내용이 조금씩 다른 사용 설명서를 제공해야 하는 상황을 가정.
고객사마다 디렉터리를 만들고 각각 복사해서 사용하려면 복잡하다. 이 때 branch 기능을 활용한다.
1) git branch : branch 만들기
2) git branch apple : apple 이라는 고객의 브랜치 생성 (아무 메세지 뜨지 않음)
3) git branch : apple branch 가 추가되어 있음을 확인, git branch 는 생성과 조회 모두 사용
4) git log : log 확인 시 (HEAD -> main, apple) 로 변경 되어있음을 확인. 명령 프롬프트에는 (main)이 떠 있으므로 지금 main branch 를 수정하고 있다는 의미임
5) git branch google
6) git branch ms
7) git branch : google 과 ms 고객사를 추가
 

3. 새 커밋을 추가하면 어떻게 될까?

현재 상태에서 git log 확인 시 work 3 의 HEAD 에 main, ms, google, apple 이 모두 들어가 있을 것이다.
1) vim work.txt - main content 4 내용 추가 
2) git commit -am "main work 4"
3) git log --oneline : 한 줄에 한 커밋씩 보여주는 옵션을 추가해서 로그를 확인. HEAD 가 현재 브랜치를 위미한다.
 

4. 브랜치 전환하기 - git switch

브랜치가 여러 개라면 각각 서로 다른 커밋을 만들 수 있다.
이 때 브랜치에서 다른 브랜치로 이동하는 것을 브랜치를 전환한다고 하고, git switch 명령을 사용한다.
(이전 버전에서는 checkout 을 사용하였으나 이 기능이 restore과 switch 로 분리됨. 변경된 명령어를 익혀 두는 것이 좋다)
 
1) git switch apple : 경로가 (main) 에서 (apple)로 변경되었음을 확인
2) git log --oneline : Head 가 work4 가 아닌 work3 으로 이동되어 있을 것.
3) cat work.txt : main content 4 가 없고 content 3 까지만 기록되어 있음.
 

브랜치 정보 확인하기

브랜치 전환 시 브랜치마다 서로 다른 커밋을 처리할 수 있다.
각각의 브랜치마다 만들어진 커밋이 서로 어떤 관계가 있는지, 차이점은 무엇인지 확인할 수 있다.
 

전환한 브랜치에서 커밋하기

1) vim work.txt - apple content 4 추가 입력 후 저장
2) vim apple.txt - apple content 4 입력 후 저장
3) git add . - git add 명령 뒤에 . 마침표 하나를 붙이면 현재 저장소에서 수정 내용이 있는 파일을 스테이지에 한꺼번에 올릴 수 있다.
4) git commit -m "apple work 4
5) git log --oneline : HEAD 는 apple 로 현재 apple 브랜치로 전환되어 있고, work4 커밋이 최신이라는 내용을 알 수 있다.
 

브랜치와 커밋 관계 알아보기

브랜치와 커밋의 관계와 연결 방법을 알아보자
1) git log --oneline --branches : 브랜치마다 최신 커밋을 확인할 수 있다.
2) git log --oneline --branchse --graph : 브랜치와 커밋 관계를 그래프로 표시, 왼쪽에 수직선을 보고 판단.
 

브랜치와 커밋 사이의 차이점 살펴보기

1) git log main..apple : main 에는 없고 apple 브랜치에만 있는 커밋을 보여 준다. 순서가 중요
2) git log apple..main : 반대로 작성 시 apple 에는 없고 main 에만 있는 내용을 보여준다.
 
 
 
 
 

댓글

💲 추천