본 문서는 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)
반응형
'번역 > Git Notes for Professionals' 카테고리의 다른 글
17.1: 하나의 브랜치 내의 특정 커밋을 다른 브랜치에 복사하기 (0) | 2019.11.27 |
---|---|
17: cherry-pick 하기 (0) | 2019.11.27 |
16.4: 자동 squash (autosquash) / 자동 fixup 기능 사용하기 (0) | 2019.11.26 |
16.3: rebase 수행 중에 squash 하기 (0) | 2019.11.26 |
16.2: merge 수행 중에 squash 하기 (0) | 2019.11.25 |