[Git] git branch 사용하기

2022. 2. 17. 16:00·Git & GitHub/Git

 

Git branch 개념 배우기 👇👇👇👇👇👇

https://myvelop.tistory.com/99?category=917184 

 

 

1.  메인 브랜치와 새로운 브랜치 만들기


git branch를 사용하는 방법은 위 개념배우기에서 사용했던 시나리오를 그대로 사용하도록 하겠다.

 

- 메인 브랜치 만들기

$ git init

## 홈페이지 만들기 ##
$ touch 홈페이지.txt

$ git add .

$ git commit -m "홈페이지"
## 홈페이지 만들기 완료 ##


## 게시판 만들기 ##
$ touch 게시판.txt

$ git add .

$ git commit -m "게시판"
## 게시판 만들기 완료 ##


## 댓글 기능 만들기 ##
$ touch 댓글기능.txt

$ git add .

$ git commit -m "댓글기능"
## 댓글 기능 만들기 완료 ##

 

- 현재 브랜치 확인하기

$ git branch
* master

 

- 새로운 브랜치(my branch) 만들기

$ git branch my

## 브랜치 확인하기 ##
$ git branch
* master
  my

 

 

git log를 해보면 master(main) 브랜치와 my 브랜치 포인터 모두 "댓글기능"을 가리키고 있다. 

$ git log
commit ef1dcd4cc2990f5cb0f4905ace6d5fd3af5c34ef (HEAD -> master, my)
Author: BigBell <pythonstrup@gmail.com>
Date:   Fri Feb 11 15:10:19 2022 +0900

    댓글기능

commit 1c29e2db744723e7cef17b023dc569d4b735e76b
Author: BigBell <pythonstrup@gmail.com>
Date:   Fri Feb 11 15:02:32 2022 +0900

    게시판

commit 209cbcb14ed375770bbcc519f156c07748b4a953
Author: BigBell <pythonstrup@gmail.com>
Date:   Fri Feb 11 15:01:38 2022 +0900

    홈페이지

 

 

 

 

2. 브랜치 이동하기


브랜치를 이동할 땐 git checkout 명령어를 사용하면 된다.

----------------------------- /d/bigbell/gitworkspace/pratice_branch (master)

$ git checkout my
Switched to branch 'my'

----------------------------- /d/bigbell/gitworkspace/pratice_branch (my)
$

디렉토리 옆을 확인해보면 (master)에서 (my)로 바뀐 것을 확인할 수 있다.

 

 

아래 방식을 사용하면 my 브랜치를 만듦과 동시에 checkout을 할 수 있으니 참고하자.

$ git checkout -b my

 

 

 

3. fast-forward merge


  • 1단계: 새로운 브랜치에 정보 추가

이제 my 브랜치에 커밋을 추가해보자. 파일 하나만 추가해보겠다.

- my 브랜치에 추가하기

$ touch 댓글추가기능.txt

$ git add .

$ git commit -m "댓글추가기능"

 

이제 깃로그를 확인해보자. 시나리오와 같이 main은 댓글 기능을 가르키고, my는 댓글 추가 기능을 가리키고 있다.

- 깃 로그 확인

$ git log
commit b44eaa1c61bf8bcb2cea363bbd48103d38dbf087 (HEAD -> my)
Author: BigBell <pythonstrup@gmail.com>
Date:   Fri Feb 11 15:16:09 2022 +0900

    댓글추가기능

commit ef1dcd4cc2990f5cb0f4905ace6d5fd3af5c34ef (master)
Author: BigBell <pythonstrup@gmail.com>
Date:   Fri Feb 11 15:10:19 2022 +0900

    댓글기능

현재 깃 로그의 상태

 

 

 

  • 2단계: 브랜치 합병하기

이제 master(main)으로 다시 이동하고 브랜치를 합병해보자(fast-forward merge 방식)

$ git checkout master

$ git merge my

 

 

다시 깃로그를 확인해보면 master와 my가 합쳐져있는 것을 확인할 수 있다!!

$ git log
commit b44eaa1c61bf8bcb2cea363bbd48103d38dbf087 (HEAD -> master, my)
Author: BigBell <pythonstrup@gmail.com>
Date:   Fri Feb 11 15:16:09 2022 +0900

    댓글추가기능

현재 깃 로그의 상태

 

 

 

 

4. 3-way merge


이번에는 3-way merge 방식이다. 폴더를 새로 만들어서 1번(메인 브랜치와 새로운 브랜치 만들기)과 2번(브랜치 이동하기)을 다시 실행하자.

 

 

  • 1단계: 새로운 브랜치에 정보 추가

이제 my branch인 상태로 파일을 추가해보자.

 

-my 브랜치에 추가

$ touch 댓글추가기능.txt

$ git add .

$ git commit -m "댓글추가기능"

 

 

깃로그를 확인해보면 아래와 같다.

$ git log
commit 537c826be068104017a65a8539f11255b09960f6 (HEAD -> my)
Author: BigBell <pythonstrup@gmail.com>
Date:   Fri Feb 11 15:30:09 2022 +0900

    댓글추가기능

commit 5025128dd5fd121dd5995efc475120ba8cdf7a97 (master)
Author: BigBell <pythonstrup@gmail.com>
Date:   Fri Feb 11 15:26:50 2022 +0900

    댓글기능

현재 깃 로그의 상태

 

 

 

  • 2단계: main 브랜치에 정보 추가

이제는 다시 master로 돌아와서 광고 기능을 추가해보도록 하겠다.

$ git checkout master
Switched to branch 'master'

$ touch 광고기능.txt

$ git add .

$ git commit -m "광고기능"

현재 HEAD는 main쪽에 있는 상태이다. main인 상태에서 git log 명령을 사용하면 my 브랜치 쪽의 포인터가 보이지 않는다.

$ git log
commit 05314a7352554e67b47fce3583bccbc6bad4241e (HEAD -> master)
Author: BigBell <pythonstrup@gmail.com>
Date:   Fri Feb 11 15:33:28 2022 +0900

    광고기능

commit 5025128dd5fd121dd5995efc475120ba8cdf7a97
Author: BigBell <pythonstrup@gmail.com>
Date:   Fri Feb 11 15:26:50 2022 +0900

    댓글기능

그렇다면 my 브랜치에 헤더가 있다면 어떻게 보일까? my쪽에서 체크아웃해서 깃로그를 확인해보면

역시나 main 브랜치 포인터가 식별되지 않는다.

$ git log
commit 537c826be068104017a65a8539f11255b09960f6 (HEAD -> my)
Author: BigBell <pythonstrup@gmail.com>
Date:   Fri Feb 11 15:30:09 2022 +0900

    댓글추가기능

commit 5025128dd5fd121dd5995efc475120ba8cdf7a97
Author: BigBell <pythonstrup@gmail.com>
Date:   Fri Feb 11 15:26:50 2022 +0900

    댓글기능

현재 헤더 영역 상태

 

 

 

  • 3단계: 브랜치 합병하기

이제 합병을 시도해보자

$ git merge my

 

 

merge 메시지를 남기라는 창이 뜰 것이다. 메시지를 남기지 않고 그냥 나오는 방법을 알려주겠다.

Merge branch 'my'
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
  1.  esc  누르기
  2.  :wq  누르고 엔터 누르기

 

이제 다시 깃 로그를 확인해보자. master부분에 my가 합쳐진 것을 확인할 수 있고, my는 댓글추가기능에 그대로 존재하는 것을 확인할 수 있다.

$ git log
commit a1abfd06ed91062114d5af7d645c58cdc9ecf148 (HEAD -> master)
Merge: 05314a7 537c826
Author: BigBell <pythonstrup@gmail.com>
Date:   Fri Feb 11 15:41:05 2022 +0900

    Merge branch 'my'

commit 05314a7352554e67b47fce3583bccbc6bad4241e
Author: BigBell <pythonstrup@gmail.com>
Date:   Fri Feb 11 15:33:28 2022 +0900

    광고기능

commit 537c826be068104017a65a8539f11255b09960f6 (my)
Author: BigBell <pythonstrup@gmail.com>
Date:   Fri Feb 11 15:30:09 2022 +0900

    댓글추가기능

 

 

 

 

*** 추가 정보 ***

merge --squash 사용방법

https://backlog.com/git-tutorial/kr/stepup/stepup7_7.html

'Git & GitHub/Git' 카테고리의 다른 글
  • [Git] git으로 원격저장소 다루기 (push, pull, clone)
  • [Git] git rebase 사용하기
  • [Git] Git Branch의 개념 (fast-forward와 3-way merge)
  • [Git] Git reset 명령어 (feat. git reflog로 복구하기)
gakko
gakko
좌충우돌 개발기
  • gakko
    MYVELOP 마이벨롭
    gakko
  • 전체
    오늘
    어제
    • 분류 전체보기 (203)
      • Spring (23)
        • Spring (10)
        • Spring Boot (7)
        • Spring Security (1)
        • Hibernate (4)
      • Test (3)
      • 끄적끄적 (6)
      • 활동 (35)
        • 부스트캠프 (23)
        • 동아리 (3)
        • 컨퍼런스 (3)
        • 글또 (5)
        • 오픈소스 컨트리뷰션 (1)
      • 디자인패턴 (0)
      • Git & GitHub (22)
        • Git (13)
        • Github Actions (1)
        • 오류해결 (5)
        • 기타(마크다운 등) (3)
      • 리눅스 (6)
        • 기초 (6)
        • 리눅스 서버 구축하기 (0)
      • Infra (2)
        • Docker (1)
        • Elastic Search (0)
        • Jenkins (1)
        • AWS (1)
      • MySQL (7)
        • 기초 (6)
        • Real MySQL (1)
      • 후기 (3)
        • Udemy 리뷰 (3)
      • CS (26)
        • 웹 기본지식 (0)
        • 자료구조 (13)
        • 운영체제 OS (12)
        • 데이터베이스 (1)
        • 시스템 프로그래밍 (0)
        • 기타 (0)
      • Tools (1)
        • 이클립스 (1)
        • IntelliJ (0)
      • 프로젝트 (1)
        • 모여모여(부스트캠프) (1)
      • JAVA (32)
        • Maven (6)
        • 오류해결 (11)
        • 자바 클래스&메소드 (1)
        • JSP & Servlet (12)
      • Javascript (5)
        • 기초 (3)
        • React (2)
      • Python (28)
        • 파이썬 함수 (9)
        • 알고리즘 문제풀이 (16)
        • 데이터 사이언스 (2)
        • 웹 크롤링 (1)
      • 단순정보전달글 저장소 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 우진님
  • 공지사항

  • 인기 글

  • 태그

    java
    자바스크립트
    운영체제
    자바
    MySQL
    알고리즘
    스프링부트
    부스트캠프 7기
    Python
    오류해결
    Spring
    os
    부스트캠프
    웹개발
    Git
    부스트캠프 멤버십
    스프링
    jsp
    파이썬
    GitHub
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
gakko
[Git] git branch 사용하기
상단으로

티스토리툴바