작업을 한 이후, 이미 push를 해버린 commit에 변경되지 말아야 할 내용을 포함하고 있어서 다음 commit에서 이 코드들을 롤백한 뒤에 푸시를 한번 더 해준 경험이 있다.이는 혼자 하는 프로젝트의 경우 문제가 되지 않는다.
하지만 팀 프로젝트의 경우 상대방이 올린 PR를 확인할 때, 먼저 올린 commit부터 확인을 하게 되는데, 이때 commit내역과 관련되지 않은, 변경되지 말아야할 부분의 변경사항이 있어 코멘트를 달았는데, 그 다음 commit에서 해당 변경사항이 롤백되는 경우 해당 코멘트가 무의미해지므로 다시 지우는 등, 리뷰하는 사람 입장에서 경험이 좋지 못하다.
따라서 commit을 합칠 수 있다면 push 하기 이전에 합친 후에 올리는 것이 좋다.
Android Studio 에서 제공하는 Git UI를 이용하여 Squash Commit 을 통해 해결할 수 있다.
https://korband.tistory.com/33
하지만, 나는 이미 push 를 해버렸기에, 이를 만회하기 위해 위에 블로그글을 참고했다.
나는 2개의 commit 만을 합치면 되었기에
git rebase -i HEAD~2
해당 명령어를 입력했으나, 다음과 같은 에러가 발생하는 것을 확인할 수 있었다.
hint: Waiting for your editor to close the file... code --wait: code: command not found
error: There was a problem with the editor 'code --wait'.
commit message 를 합칠 준비를 하고 있었는데, 위와 같이 정상적으로 진행이 되지 않았고 검색 결과를 통해 Visual Studio Code 가 컴퓨터에 깔려있지 않았기에 발생하는 에러임을 알 수 있었다.
그치만 단순히 commit 을 합치는 용도로 Visual Code 를 깔고 싶진 않았다.
Android Studio 에서 제공하는 git UI를 통해 이를 해결할 수 있을 것 같아, 여러 동작들을 테스트 해보았다. (대부분의 작업들은 거진 다 가능하기에 별도로 소스트리 같은 툴을 사용하는 것을 별로 좋아하진 않는다. 사용할 때 버그도 많았었던 경험이 있기에)
Android Studio 왼쪽 제일 하단에 아이콘을 클릭하면 다음과 같이 현재 브랜치들의 정보와 각 브랜치의 commit 내역을 확인할 수 있다. 내가 합치고 싶은 커밋들을 마우스로 지정해보면
다음과 같이 가장 최신 두개의 커밋을 동시에 클릭해서 우클릭을 누르면 하단에 Squash Commits 이 존재한다. (Squash merge 와 비슷한 기능으로 commit 내역을 하나로 합쳐준다.)
Squash Commits 을 누르면 다음과 같이 각각의 commit message 가 위아래로 뜨는 것을 확인할 수 있고 원하는 commit message 로 통합 해준뒤 OK 를 눌러주면 된다.
다만 여기서 끝난 것은 아니고, 이미 remote 에 올라간 커밋 내역이기 때문에 변경 사항을 반영하려면
git push -f origin {branch name}
위에 git command 를 terminal 에 입력을 해주어야 한다.(강제 push command 이므로 branch name 이 내가 원하는 name 이 맞는지 확인하도록 하자.)