rebase 과정
- txt 파일에 1 2 3 4 5 6 7 작성 후 각각 commit.
- 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이 됨
- -i 옵션으로 인해 rebase 대화창이 pop-up
- commands를 입력해 commit 내용 편집, 삭제, 순서 변경 등의 작업을 수행. 메모장을 저장하고 닫으면 commands에 따라 rebase가 수행됨.
- rebase 메시지에서 commit 정렬 순서: 오래된 commit이 위쪽에, 최근에 수행한 commit이 아래쪽으로 정렬됨.
- 병합 순서: commit이 squash 될 때는 위쪽의 commit으로 병합
- rebase 수행 후: "commit 7"
- rebase 수행 후: "commit 4"
- rebase 수행 후: "commit 1"
현재 HEAD는 "commit 7"을 가리키고 있음.
오래된 commit에 차곡차곡 변경 사항이 쌓임. 위의 예에서는 "commit 2" 가 "commit 1"에 병합. "commit 6" -> "commit 5" -> "commit 4"에 병합.
"commit 4"에 "commit 5,6"의 내용이 병합. 위쪽(보다 오래된 commit)에 변경 사항이 누적됨.
"commit 1"에 "commit 2"의 내용이 병합. 위쪽(보다 오래된 commit)에 변경 사항이 누적됨.
댓글 없음:
댓글 쓰기