대충 쓴 Git Commit 합치기 (rebase)

황주현·2022년 3월 14일
1

Git

목록 보기
1/2

들어가며


Git 의 commit은 최대한 명확한 범위 안에서 진행하려고 노력한다.
그렇지만 부득이하게 대충 명확하지 못한 범위로 commit 하는 경우가 있다.

나 같은 경우에는 개발하던 중 개발하는 환경이 옮겨질 때 (ex. 데스크탑 -> 노트북) 백업 개념으로 commit을 종종 하곤 한다.

이번에는 이 같은 commit을 하나로 합치는 방법을 알아보려 한다.

Git rebase

Git 에서는 rebase 라는 기능을 제공한다.
이름 만 봐도 알 수 있듯이 베이스(기준점)을 재배치 한다는 뜻이다.

보통 브랜치 개발이 완료되면 merge를 하게 되는데, 앞서 말했던 명확하지 않은 commit이 많이 존재하면 히스토리를 볼 때 많이 복잡해진다.

아래 경우를 보며 한번 같이 진행해보자.


합치기 위한 Commit 확인하기


위 사진은 내가 진행하던 토이 프로젝트의 커밋 중 일부이다.

상단의 feat: add layout (header, footer) - 3ce0f38가 정상적인 commit 이고,
하단의 refactor: save-220314-17:53 -01b6c48이 임의로 백업하기 위해 적은 commit 이다.

나는 상단의 3ce0f38만 남기고 01b6c48을 합쳐 흔적 자체를 없애버리려고 한다.

이는 HEAD로 부터 2개의 commit을 합치는 작업이다.


rebase 진행

git rebase -i HEAD~2

HEAD로 부터 2개의 commit을 합치기 위해 위와 같이 작성하였다.

상단의 2줄을 확인해보면, 내가 합치고 싶었던 01b6c483ce0f38이 확인된다.
나는 01b6c48을 남기고 싶기 때문에 pick을 지우지 않고, 3ce0f38 을 Pick에서 s로 변경한다.


그리고 저장을 하면 아래와 같은 창이 확인된다.

commit 메세지를 원하는 대로 수정하고 저장하면 rebase가 완료된다.


저장소에 강제 Push 하기

오! 드디어 끝난 거 맞죠!! 🥳

rebase작업이 끝나긴 했지만, 아직 저장소에는 적용되지 않은 상태이다.
일반적으로 push를 진행하게 되면 저장소와 로컬의 commit 히스토리가 달라 정상적으로 진행되지 않는다.


따라서 강제적 옵션을 주어 push를 완료한다.

git push -f

정상적으로 commit이 합쳐지고, 히스토리에 나타나지 않는 것이 확인된다.

정리

  • HEAD로부터 합치고 싶은 commit 개수 확인
  • git rebase -i HEAD~개수 명령어 진행
  • 합치고 싶은 commit이외의 Pick -> s
  • commit 메세지 수정 및 저장
  • git push -f로 저장소에 강제 push
+ 읽어주셔서 감사합니다.
+ 오타, 내용 지적, 피드백을 환영합니다. 많이 해주실 수록 제 성장의 밑거름이 됩니다.
profile
반갑습니다. 프론트엔드 개발자 황주현 입니다. 🤗

0개의 댓글