4월 13, 2016

git rebase -i 사용법

rebase 과정

  1. txt 파일에 1 2 3 4 5 6 7 작성 후 각각 commit.

  2. <text 파일 내용>


    <commit log> 

    현재 HEAD는 "commit 7"을 가리키고 있음.

  3. rebase 실행: git rebase HEAD~7 -i
    • HEAD 는 어느 commit 까지 rebase 할지를 알려주고 -i 옵션은 interactive 하게 rebase를 실행함을 의미.
    • HEAD~n 에서 n은 commit log에서 첫번째 commit까지 rebase하는 경우 1, 2번째까지 rebase하는 경우 2, ... , n번째 commit까지 rebase하는 경우 n이 됨. 즉, 위의 예시에서 "commit 7"이 HEAD~1이 됨
  4. -i 옵션으로 인해 rebase 대화창이 pop-up
    • commands를 입력해 commit 내용 편집, 삭제, 순서 변경 등의 작업을 수행. 메모장을 저장하고 닫으면 commands에 따라 rebase가 수행됨.
    • <변경 전 commit> 
      <수정 된 commit> 
    • rebase 메시지에서 commit 정렬 순서: 오래된 commit이 위쪽에, 최근에 수행한 commit이 아래쪽으로 정렬됨.
    • 병합 순서: commit이 squash 될 때는 위쪽의 commit으로 병합
    • 오래된 commit에 차곡차곡 변경 사항이 쌓임. 위의 예에서는 "commit 2" 가 "commit 1"에 병합. "commit 6" -> "commit 5" -> "commit 4"에 병합.

    • rebase 수행 후: "commit 7"
    • <commit log> 
      <text file contents> 
    • rebase 수행 후: "commit 4"
    • "commit 4"에 "commit 5,6"의 내용이 병합. 위쪽(보다 오래된 commit)에 변경 사항이 누적됨.

      <text file contents> 
    • rebase 수행 후: "commit 1"
    • "commit 1"에 "commit 2"의 내용이 병합. 위쪽(보다 오래된 commit)에 변경 사항이 누적됨.

      <text file contents> 

references

Rewriting history

댓글 없음:

댓글 쓰기