0. Introduction

  • 이번 단원에서는 git merge --squash 명령어를 사용해서 다른 가지의 마디들을 묶어서 가져와본다.

다른 가지의 마디들 묶어서 가져오기

git merge –squash (대상 브랜치): 다른 branch의 구체적인 commit 내역을 기억하고 싶지 않아서 다른 branch의 커밋들을 묶어서 한 커밋으로 가져오는 명령어

  • 소단원 2,3과 동일한 branch와 commit을 사용한다.

  • 현재 branch는 main이며, root branch에 있는 커밋들을 묶어서 한 커밋으로 가져온다.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    
    $ git merge --squash root
    
    $ git status
    On branch main
    Changes to be committed:
    (use "git restore --staged <file>..." to unstage)
            new file:   beet
            new file:   potato
            new file:   radish
    
    # git commit -m 으로 commit message를 별도로 적어도 되고, 아래와 같이 해도 된다.
    $ git commit
    Squashed commit of the following:
    
  • git log를 통해서 합쳐진 것을 알 수 있다.

    1
    2
    3
    4
    5
    6
    
    $ git log
    commit b2d15aa2b4b9f7b7d63036fce1256274168fb7b7 (HEAD -> main)
    Author: Jeha00 <rudtls0611@naver.com>
    Date:   Wed Jul 13 12:48:30 2022 +0900
    
        Squashed commit of the following:
    

일반 merge와의 차이

  • 일반 mergemerge --squash는 실행 후, 코드의 상태는 같지만 내역 면에서 큰 차이가 있는 것이라 이해해자.
  • 일반 merge: A와 B 두 브랜치를 한 곳으로 이어붙인다.
  • merge –squash: B 브랜치의 마디들을 복사하여, 한 마디로 모아 staged state로 A 브랜치에 붙인다.

Reference