[TIL / Git] 커밋 덮어쓰기, stash
- 다른 브랜치로 체크아웃하려고 하면 커밋하지 않은 변경사항이 없어야 한다.
- 긴급하게 다른 브랜치로 체크아웃 하고 싶을 때 사용하는 두 가지 방법이 있다.
커밋 덮어쓰기
- 현재 브랜치에서 일단 임시 커밋을 한다.
- 다른 브랜치로 체크아웃하고 볼일을 본다.
- 다시 이전 브랜치로 되돌아온다.
- 작업을 이어서 마무리 짓는다. → 여기서 그냥 커밋을 하게 되면 임시 커밋 위에 커밋이 되기 때문에 좋지 않다.
- 그래서 커밋 덮어쓰기(commit --amend)를 한다. → 소스트리에서는 커밋 옵션에서 '마지막 커밋 정정'을 누르고 커밋하면 된다.
- 임시 커밋을 푸시해버렸으면 덮어쓰기가 안되기 때문에 강제푸시(push --force)를 해야 한다.
stash 사용
- stash는 다른 브랜치로 체크아웃하기 전에 현재 작업 내용을 저장하는 임시 저장소다.
- 불필요한 커밋을 줄이기 위해 사용한다.
- 커밋하지 않은 변경사항이 있는 상태에서 stash를 만든다. → 스테이징이 한 번도 안됐던 파일(untracked file)은 stash가 불가하므로 스테이지에 올려준다.
- 다른 브랜치로 체크아웃하고 볼일을 본다.
- 다시 이전 브랜치로 되돌아온다.
- stash를 pop한다. → stash 적용을 누르면 원래 작업 중이던 내용으로 되돌아간다.
- 커밋을 새로 작성한다.
- 불필요한 stash는 삭제한다.
P.S.
✍️ 커밋을 빠짐없이 하되, 의미 없는 커밋을 만들지 않는 것도 얼마나 중요한지 느끼게 된다.
Reference