[iOS 사전캠프] Git: cherry-pick, interactive rebase

DoyleHWorks·2024년 10월 17일
0

학습 사이트에서 다음 레벨에 해당하는 내용이다.

  • Moving Work Around (1~2) level move<num>
    • Cherry-pick Intro
    • Interactive Rebase Intro

cherry-pick

주요 개념

  • cherry-pick은 다른 브랜치나 커밋에서 원하는 커밋만 골라서 현재 브랜치에 적용한다.
  • 병합(merge)과 달리, 전체 브랜치의 변경 사항을 합치는 것이 아니라 특정 커밋만 선택적으로 가져오는 방식이다.
  • 커밋 히스토리가 복사되므로, 원본 커밋은 그대로 남아 있고, 복사된 커밋이 현재 브랜치에 새로운 커밋으로 추가된다.

사용법

git cherry-pick <커밋 해시>
git cherry-pcik <커밋 해시1> <커밋 해시2>
// 여러 개의 커밋도 한 번에 cherry-pick할 수 있다.

충돌 처리

  • git cherry-pick을 실행하다보면 충돌(conflict)이 발생할 수 있다
  • 이 경우 Git이 충돌을 해결하라는 메시지를 띄우며, 충돌을 해결하면 다음 단계로 진행할 수 있다.
// 충돌 해결 후:
git add <conflict file>
git cherry-pick --continue
// cherry-pick을 중단하고 싶다면:
git cherry-pick --abort
// 현재 진행 중인 cherry-pick 작업을 취소하고 원래 상태로 돌아감

interactive rebase (rebase -i)

  • git rebase -i는 인터랙티브 리베이스(interactive rebase)라고 불리며, Git에서 커밋 히스토리를 수정하거나 정리할 때 매우 유용하다. 일반 git rebase와는 달리 -i 옵션을 사용하면 커밋을 수동으로 선택하고 관리할 수 있는 상호작용 모드로 들어간다. (UI 열어줌: Vim 등)

주요 기능

  • 커밋 메시지 수정: 이전 커밋의 메시지를 바꿀 수 있다.
  • 커밋 합치기: 여러 커밋을 하나로 합칠 수 있다.
  • 커밋 순서 변경: 커밋의 순서를 변경할 수 있다.
  • 커밋 삭제: 불필요한 커밋을 삭제할 수 있다.
  • 커밋 분리(Squash): 여러 커밋을 하나로 합치면서, 커밋 메시지도 조정할 수 있다.

주요 명령어

  • pick: 커밋을 그대로 유지한다.
  • reword: 커밋 메시지를 수정한다. 커밋 내용은 그대로지만, 메시지만 바꾸고 싶을 때 사용한다.
  • edit: 해당 커밋으로 일시적으로 이동하여 수정할 수 있다. 커밋 내용을 수정하거나 파일을 변경한 후 다시 진행할 수 있다.
  • squash (또는 s): 이전 커밋과 병합한다. 커밋 내용을 하나로 합치면서 커밋 메시지도 수정할 수 있다.
  • fixup (또는 f): 이전 커밋과 병합하되, 커밋 메시지를 남기지 않고 병합한다.
  • drop: 해당 커밋을 삭제한다.
profile
Reciprocity lies in knowing enough

0개의 댓글