IntelliJ 인텔리제이 - Git commit squash (Interactively Rebase)

Git 을 이용해서 진행하는 개발 업무를 하다보면, 급한 이슈로 인해서 현재 작업하던 것을 제쳐두고 해당 이슈를 처리해야 할 일이 있다. 그러면 해당 작업을 불가피하게 commit 혹은 stash 를 이용하여 현재까지 작업한 상태를 보존해야 한다. 여담으로, 개인적으로 stash 를 상당히 비추한다. 그 이유는, commit 이 안된 stash 의 경우 실수로 날려버리면 복구가 불가능하다. 실제로 업무를 하다가 실수로 기존 stash 를 clear 해버려서 하루종일 작업한게 날아갈 뻔해서 진땀을 한바가지 흘린 적이 있다. 다행히도 commit 을 했어서, commit hash 를 통해서 복구를 했었다. 따라서 stash 보단 commit 을 자주하여, squash 를 애용하겠다고 생각했다. 다시 돌아와서 얘기하자면, 급한 이슈가 자주 발생하면 할수록, 도중에 흐름이 끊겨서 설계한 대로 commit 단위를 쪼개기가 어려워지고 의미있는 commit message 작성이 어려워진다. 따라서 commit 단위를 관리하기 위해서 squash 를 통해 commit 메세지를 관리하는 방법을 블로깅 해보려고 한다. 단적인 예로 아래와 같이 Pageable 이라는 feature 에 대해서 3가지로 나눠졌다. 해당 예제는 여러사람들과 같이 협업이 아니라 혼자 진행하고 있는 사이드 프로젝트라서 브랜치가 하나이다. 또한 전제로 이 기능은 매우 간단하며, 하나의 commit 으로 관리되는것이 더 효율적이라고 판단된 사항이다. 따라서 3개의 commit 을 하나로 통합하는 예제이다. 그렇다면 이제 진행해 보자. 아래와 같이 commit 내역에 오른쪽 클릭을 하고, interactively rebase from here.. 를 선택한다. 아래와 같이 하나의 commit 내역만 대상에 뜬다. 따라서 HEAD~3 을 합치고 싶은경우, HEAD~3 의 commit 을 다시 오른쪽 클릭하고 동일하게 진행해준다. 아래와 같이 HEAD~3 co...