Publish 전 다듬기 — amend, fixup, autosquash
실전 코딩은 지저분해. Feature commit, 주석 오타 발견, 테스트 하나 업데이트 잊은 거 깨달음, docstring 손볼 거 기억. 그 네 commit 그대로 push 하면 noisy 해. 프로의 답: push 전에 local history 정리해서 main 에 올라가는 게 한 관심사 = 한 일관된 이야기로 읽히게. 이걸 하는 명령 셋: --amend, --fixup, --autosquash.
git commit --amend 는 가장 최근 commit 을 '이전 변경 + 지금 staged 인 거' 합친 새 commit 으로 교체. 원본 commit 의 hash 는 사라지고 새 commit 이 그 자리. 흔한 '파일 add 잊음' 또는 '메시지가 X 였어야' 케이스에 사용. Amend 가 메시지용 editor 열어, --no-edit 는 기존 메시지 그대로 재사용.
git commit --fixup <hash> 는 '나중에 commit <hash> 안으로 fold 돼야 함' 으로 마킹된 새 commit 만들어. Push 가능한 일반 commit 인데 'delayed amend' 라는 metadata 가 붙어. 짝꿍 git rebase -i --autosquash 가 그 마커를 읽고 각 fixup commit 을 target 에 squash 하도록 interactive rebase 를 배열 — 수동 재정렬 없음, 메시지 rewrite 없음. git config --global rebase.autosquash true 박으면 모든 interactive rebase 에서 자동.
이걸 굴리는 흐름: 작업 중 'oh and also' 변경마다 원본 commit 에 대한 git commit --fixup. 자유롭게 push. Merge 전이나 review 후 git rebase -i --autosquash main 하면 Git 이 정리된 history 를 조립. PR 의 pre-review noisy commit 들이 의도한 logical unit 으로 합쳐져. Reviewer 는 깨끗한 버전 보고, main 은 noise 안 봐.