⚙️ Devops/⛏ Git

[Git] Git Branch 란?

2021. 7. 20. 18:21
목차
  1. Branch 란?
  2. Branch는 왜 사용할까?
  3. Branch 실습해보기
  4. $ git log --all --graph
반응형

 


Branch 란?

"나무가지" 또는 "분기"라는 뜻을 가지고 있습니다. 

git 에서는 특정 커밋을 가리키는 포인터라고 합니다.

 


Branch는 왜 사용할까?

실무에서는 master 브랜치에서 쭉 개발을 하지 않고, 각 기능별로 개발 흐름을 쪼개서 병렬적으로 처리할 수 있도록 해줍니다.

이런식으로 기능별로 각 브랜치를 생성해 개발 흐름을 쪼개서 다른 브랜치의 영향을 받지 않고 독립적으로 그 기능을 개발 할 수 있도록 해주는 개념입니다.

 


Branch 실습해보기

master 브랜치에서 개발에 필요한 develop 브랜치로 쪼개고 또 그 안에서 기능 A(Func-A)와 기능 B(Func-B) 브랜치로 나눠보겠습니다.

 

1. 현재 커밋 로그 확인

현재 HEAD가  master 브랜치를 가리키고 있습니다.

이제 master 브랜치에서 develop 브랜치를 생성해주겠습니다.

 

2. develop 브랜치 생성하기

$ git branch develop

다시 $ git log 를 통해 보겠습니다.

자 이제 develop 브랜치가 생성되었습니다. 

 

3. 브랜치 안에서 또 브랜치 생성하기 (checkout 명령어)

위 상황에서는 HEAD가 master 브랜치를 가리키고 있기 때문에 develop 브랜치를 가리키게 해줘야합니다.

이때 사용하는 명령어는 $ git checkout 명령어입니다.

$ git checkout develop

자 이제 HEAD가 develop 브랜치를 잘 가리키고 있습니다.

 

이제 기능 A와 기능 B를 따로 개발을 진행하기 위해, 각각 알맞게 브랜치를 생성해주겠습니다.

$ git branch Func-A

$ git branch Func-B

 

4. 각 브랜치에서 기능을 개발해보기

  • 간단하게 예시로
    • 1번째로 Func-A에서는 ClassA를 생성하고
    • 2번째로 Func-B에서는 ClassB를 생성해서 각각 커밋을 해보도록 하겠습니다.

 

Func-A 개발

1. 먼저 checkout 명령어로 해당 브랜치로 이동!

$ git checkout Func-A

 

2. 새로운 클래스 생성하고 $ git add 후 $ git commit 수행

$ git add ClassA.java
$ git commit -m "Add ClassA in FuncA"

 

현재 상태의 $ git log를 통해서 한번 볼까요?

이렇게 보니까 잘 이해가 잘 안되는 것 같습니다. 그림으로 한번 보겠습니다.

Func-A 브랜치는 최신 커밋을 가리키고 있고, 아직 develop 브랜치와 Func-B 브랜치는 2번째 커밋을 가리키고 있습니다. (이 두 브랜치의 코드는 자신들이 가리키고 있는 2번째 커밋의 상태입니다.)

 

Func-B 개발

이제 Func-B 기능을 개발해보도록 하겠습니다.

1. 먼저 Func-B 브랜치로 이동을 해줍니다.

$ git checkout Func-B

 

2. 새로운 클래스 생성하고 $ git add 후 $ git commit 수행

$ git add ClassB.java

$ git commit -m "Add ClassB in Func-B"

 

$ git log 를 통해 현재 커밋 로그를 살펴보겠습니다.

음.. 방금 커밋한 내용은 잘 나왔는데 이전에 우리가 했던 Func-A 브랜치에서 커밋했던 내용은 안나옵니다. 왜그럴까요?

현재 HEAD가 가리키고 있는 커밋이 Func-B의 커밋이기 때문입니다.

그렇다면 모든 브랜치의 커밋내용을 확인 하고 싶을 때는 어떻게 하면 될까요?

바로 $ git log --all 입니다.

 

$ git log --all --graph

  • --all : 모든 브랜치들의 커밋내역을 볼 수 있습니다.
  • --graph : 브랜치들의 커밋 관계를 그래프 형식으로 볼 수 있습니다.
  • 이외의 --oneline 옵션도 있습니다.

자 이제 모든 브랜치들의 커밋 내역까지 다 볼 수 있습니다!

 

정리

기능별로 브랜치를 생성하여 흐름을 쪼개면 이렇게 해당 기능을 독립적으로 개발할 수 있고, 나중에 오류가 생겼을 때 해당 브랜치로 이동하여서 수정을 하면 되기 때문에 개발을 할 때 많은 이점을 줍니다.

 


REFERENCE

Merge 이해하기

이제 branch를 배웠으면 꼭 알아야하는 개념이 있는데 바로 Merge 입니다. 브랜치를 쪼갰으면 나중에 가서 다시 합쳐야 하는데 그 작업을 Merge라고 합니다.

Merge에 대한 설명은 Merge 이해하기 포스팅을 참조하시기 바랍니다.

 

[Git] Git Merge 이해하기

Merge $ git merge {branch_id} : 현재 HEAD가 가리키고 있는 branch에 branch_id에서 했던 작업들을 합쳐라는 뜻입니다. Branch로 개발 흐름을 쪼개서 개발을 했다면 언젠가는 이 쪼개진 흐름들을 다시 합쳐야..

iseunghan.tistory.com

 

감사합니다 :D

반응형
저작자표시 (새창열림)
  1. Branch 란?
  2. Branch는 왜 사용할까?
  3. Branch 실습해보기
  4. $ git log --all --graph
'⚙️ Devops/⛏ Git' 카테고리의 다른 글
  • [GitLab] Fork/Clone 하기, Merge Request 보내기
  • [Git] Git Merge 이해하기
  • [Git] Git HEAD, reset 옵션 3가지 (hard, mixed, soft)
  • [Git] Git 3가지 영역 (Staging Area) - Commit 이해하기
iseunghan
iseunghan
꾸준하게 열심히..
iseunghan꾸준하게 열심히..
iseunghan
iseunghan

공지사항

  • 어제보다 나은 오늘이 되기 위해 🔥
  • 분류 전체보기 (262)
    • 💐 Spring (14)
      • 개념 및 이해 (2)
      • Spring 핵심 기술 (24)
      • Spring REST API (8)
      • Spring MVC, DB 접근 기술 (7)
      • Spring Security (23)
      • Spring in Action (1)
    • 🌻 JAVA (84)
      • 자바 ORM 표준 JPA 프로그래밍 (20)
      • 알고리즘, 자료구조 (13)
      • 디자인 패턴 (7)
      • 정리정리정리 (43)
      • JUnit (1)
    • 🔖 Snippets (3)
      • Javascript (3)
    • ⚙️ Devops (22)
      • ⛏ Git (11)
      • 🐳 Docker (6)
      • 🐧 Linux (3)
      • 🌈 Jenkins (1)
      • 📬 Kafka (1)
    • 💬 ETC.. (4)
      • 💻 macOS (2)
    • 🌧️ ORM (2)
      • JPA (2)
    • 🐍 Python (3)
    • 📚 Databases (15)
      • 오라클로 배우는 데이터베이스 개론과 실습(2판) (3)
      • RealMySQL 8.0 (8)
    • 🔥 Computer Science (5)
      • 📡 네트워크 (5)
    • 🏷️ 협업 (1)
    • 📜 코딩테스트 (38)
      • BAEKJOON\수학 1, 수학 2 (8)
      • BAEKJOON\재귀 (5)
      • BAEKJOON\브루트 포스 (3)
      • BAEKJOON\정렬 (1)
      • BAEKJOON\백트래킹 (5)
      • BAEKJOON\BFS, DFS (6)
      • BAEKJOON\이분탐색 (1)
      • BAEKJOON\다이나믹 프로그래밍 (9)
      • BAEKJOON\그리디 알고리즘 (0)
    • ✨ ISEUNGHAN (1)

인기 글

최근 글

전체
오늘
어제
반응형
hELLO · Designed By 정상우.
iseunghan
[Git] Git Branch 란?
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.