공부/Git, GitHub

[Git/Fork]Interactively Rebase 주의할 것 (squash 관련)

개발의 피 2024. 10. 5. 01:44

내가 하고 싶었던 것 : Github Desktop - Squash and merge 

문제 : 지금까지 한 커밋들을 하나로 합쳐, 새로운 이름을 가진 커밋으로 main에 추가하는 기능

-> 중간중간 main으로 머지했어야 했는데, 미루다가 브랜치에서 몇 십개의 커밋이 이뤄졌음

 

 

그래서 그냥 커밋 하나로 합칠까... 아니면 커밋들 전부를 그대로 합칠까...

나랑 타협을 시도해봤지만, 용납할 수 없다는 결론을 내렸고 , 그럼 어쩌겠어... 해내야지.... 

 

 

 


https://velog.io/@joonghyun/Git-Interactive-Rebase%EB%A1%9C-%EC%BB%A4%EB%B0%8B-%EA%B7%B8%EB%9E%98%ED%94%84-%EA%B9%94%EB%81%94%ED%95%98%EA%B2%8C-%EB%A7%8C%EB%93%A4%EA%B8%B0

 

[Git] Interactive Rebase로 커밋 그래프 깔끔하게 만들기

Rebase 명령어를 통해 Git 커밋 그래프를 깔끔하게 만드는게 가능합니다. 여기서 Interactive Rebase를 사용하면 커밋 내용도 다시 정리하여 훨씬 더 깔끔하게 만드는 것이 가능합니다.먼저 Rebase 명령어

velog.io

 

* Merge vs. Rebase

- 공통점 : 두 브랜치 합치기 

- Merge : 새로운 커밋 생성, 합치기 

- Rebase : 새로운 커밋 x, 합치기

 

* Rebase, Interactively Rebase 차이점

- 공통점 : 브랜치의 기준 변경(rebase)

- Rebase : 커밋 내용, 순서 변경없이 그대로 적용 

- Interactively Rebase : 각 커밋에 대해 작업 선택 가능 (합치기, 삭제, 커밋 메시지 수정 등)

 

 

* Interactively Rebase 옵션

- Pick : 커밋 그대로 사용

- Edit : 수정을 위해 중지 

- Reword : 커밋 메시지 수정

- Squash : 이전 커밋에 합치고 메시지 유지

- Fixup : 이전 커밋에 합치고 메시지 버림

 

 

이 중에서, Reword는 커밋 메시지를 변경할 수 있는 거고 

 

내가 실수했던 부분 

Squash가 상위(최신) 커밋에 합쳐지는 건 줄 알았는데, 방향이 그게 아니고 

하위(이전) 커밋에 합쳐지는 거였다... !!!!!!!!! 

 

왜 내가 원하는대로 안 되는 거지...? 싶어서 Reset으로 여러 번 원래 상태로 되돌리다가, 뭐가 잘못됐지... 고민하다가 

화살표방향이 아래로 향하는 거면 아래로 합쳐지는 거고, 내가 잘못했음을 깨달았다 ㅎㅋ