[Git] git rebase으로 커밋 수정 + 삭제

이수정·2022년 12월 3일
0

❗️❗️❗️ [ git rebase는 커밋 로그를 깔끔하게 정리할 때 유용하다. ] ❗️❗️❗️



  • 기본 사용법

💡 git rebase -i HEAD~x
x에 원하는 커밋 개수를 적어주면 된다.



우선, git의 rebase를 사용하기 위해 커밋 로그들을 만들었다.



  • 주로 사용하는 옵션

[1] r(reword)

이미 commit한 commit 메시지 수정할 수 있다.

  1. rebase 명령어와 함께 HEAD~ 뒤에 보고 싶은 커밋의 개수를 적어준다.

  2. 1번의 결과로 편집기가 열려 내가 입력한 커밋 로그 개수만큼 보여준다. 이제 pick이라고 써져있는 자리에 r 옵션을 적어주고 편집기를 닫으면 된다.

  3. 다시 새 편집기가 열리는데 바꾸고 싶은 커밋 메시지를 적어주고 편집기를 닫으면 된다.

  4. 이제 git log를 보면 커밋 메시지가 수정되어 있는 것을 볼 수 있다.






[2] d(drop)

특정 commit을 삭제할 수 있다.

  • [1]과 사용법은 비슷하다. 다만, 삭제하고 싶은 커밋에 옵션만 d로 적어주면 된다.

💡 git log를 보면 커밋이 삭제되어 없어져 있는 것을 볼 수 있다.


[ 추가 ] 실수로 삭제한 커밋을 되돌리는 법

  • git reflog는 한 번이라도 commit한 것에 대한 모든 기록을 가지고 있다.
    이 명령어를 통해 실수로 삭제한 커밋을 확인하고 이 커밋 이전의 해쉬값과 함께 아래의 명령을 실행시켜주면 커밋을 되돌릴 수 있다.
git reset --hard 복구하길 원하는 커밋의 이전 해쉬값

💡 git log를 보면 삭제된 커밋이 다시 있는 것을 볼 수 있다.






[3] s(squash)

커밋 로그를 깔끔하게 만들 때 사용한다.
[ 주의 ] 항상 과거쪽으로 짓눌러(squash)줘야 한다는 점이다.
즉, 과거 쪽으로 합친다고 생각하면 된다.

예시) "로그인1 완성", "로그인2 완성", "로그인3 완성"이라는 3개의 커밋 로그를 "로그인 완성"이라는 하나의 커밋 로그로 만들고 싶다.

📝 로그인1 완성 → pick
📝 로그인2 완성 → squash
📝 로그인3 완성 → squash


  1. rebase 명령어와 함께 HEAD~ 뒤에 보고 싶은 커밋의 개수를 적어준다.

  2. 1번의 결과로 편집기가 열리면 과거 방향으로 pick 자리에 s 옵션을 적어주고 편집기를 닫아준다.

  • 항상 과거쪽으로 s옵션을 사용해야 하는 것에 주의해야 한다.


  1. 다시 새 편집기가 열리는데 마지막 커밋 영역에 원하는 커밋 메시지를 적어주면 된다.

  2. git log를 보면 커밋 로그가 깔끔하게 하나로 남아있는 것을 볼 수 있다.

profile
개발 공부 기록

0개의 댓글