GitNotes.16-5.md
본 문서는 Git Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

Section 16.5: 자동 stash (autosquash): rebase 시에 squash 시킬 코드 커밋하기

아래와 같은 history 가 있을 때, "bbb2222 A second commit" 커밋에 합쳐져야 (squash) 하는 변경사항을 생성하는 상황을 가정해 보자:

$ git log --oneline --decorate ccc3333 (HEAD -> master) A third commit bbb2222 A second commit aaa1111 A first commit 9999999 Initial commit

변경사항 작성을 마친 이후 평소와 다를바 없이 index에 변경사항들을 추가하고 나서, --fixup 옵션을 합치고자 하는 커밋에 대한 참조 정보와 함께 커밋 명령어에 전달한다:

$ git add . $ git commit --fixup bbb2222 [my-feature-branch ddd4444] fixup! A second commit

위 명령어는 git 이 대화형(interactive) rebase 시 감지할 수 있는 커밋 메시지를 갖는 새로운 커밋을 생성해줄 것이다:

$ git log --oneline --decorate ddd4444 (HEAD -> master) fixup! A second commit ccc3333 A third commit bbb2222 A second commit aaa1111 A first commit 9999999 Initial commit

다음으로, 대화형(interactive) rebase 작업을 --autosquash 옵션과 함께 시작한다:

$ git rebase --autosquash --interactive HEAD~4

Git 은 --fixup 옵션과 함께 생성했던 커밋들을 적절한 위치에 squash 할 수 있도록 제안할 것이다:

pick aaa1111 A first commit pick bbb2222 A second commit fixup ddd4444 fixup! A second commit pick ccc3333 A third commit

매 rebase 수행시마다 --autosquash 옵션을 입력할 필요 없이, 아래처럼 해당 옵션을 기본으로 설정할 수도 있다:

$ git config --global rebase.autosquash true

[출처] https://books.goalkicker.com/GitBook/ (CC BY-SA)

반응형

+ Recent posts