티스토리 뷰

Git

[코드 이리저리 옮기기] 2: 인터랙티브 리베이스 소개

개발하고싶은개발자 2023. 11. 4. 20:06

인터랙티브 리베이스

  • reabse를 할 때 대화형(-i 옵션)으로 실행하는 것을 말한다
  • rebase를 진행할 때 다양한 추가 기능을 제공한다
  • 인터랙티브 리베이스로 실행하면 vim 같은 텍스트 편집기 파일이 열리는데 그곳에서 다양한 기능을 적용할 수 있다
  • 이 글에서는 3가지 기능에 대해서만 알아보겠다
    1. 적용할 커밋들의 순서를 변경할 수 있다
    2. 원하지 않는 커밋은 제외시킬 수 있다
    3. 커밋을 스쿼시(squash)할 수 있다

 

 

0. 현재 브랜치 상태

현재 상태에서 공통적으로 아래와 같은 명령어를 사용해 본 후 각 기능에 대해서 알아보자

$git rebase -i HEAD~3

 

 

1. 적용할 커밋들의 순서를 변경할 수 있다

위와 같은 텍스트 편집기가 열리는데 여기에서 커밋들의 순서를 변경한 후 :wq로 편집기를 종료하면 정한 순서대로 리베이스가 진행이 된다

위처럼 순서가 1,2,3으로 되어있던 것을 1,3,2로 변경해서 커밋들의 순서를 변경할 수 있다.

 

 

2. 원하지 않는 커밋은 제외시킬 수 있다

마찬가지로 제외하고 싶은 커밋에 대해서 앞에 pick이아 아닌 drop을 적어주면 해당 커밋을 제외하고 리베이스 할 수 있다.

위와 같이 하면 2에 대한 커밋 내용은 제외하고 1,3에 대해서만 리베이스를 한다

 

 

3. 커밋을 스쿼시(squash)할 수 있다

스쿼시는 커밋을 합치는 명령어인데 인터랙티브 리베이스에서 스쿼시를 사용하면 이전 커밋과 합쳐진다

위처럼 스쿼시를 합치면 기존 2,3에 대한 내용이 1에 합쳐져서 3개였던 커밋이 1개로 되고 이때 커밋 메시지를 작성하라는 추가적인 텍스트 편집기가 열린다.

 

 

 

 

 

목표

goal에 나타난 순서대로 만들기 위해 인터렉티브 리베이스를 사용해보자.

$git rebase -i HEAD~4
#위의 명령어 실행 후 C2는 제외하고 C4와 C5의 위를 바꾼다

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30