본문 바로가기

git

[Git] 커밋 히스토리 관리를 위한 명령어 : cherry pick, rebase

cherry pick

  • 원하는 커밋 가져오기
  • 특정 커밋을 현재 HEAD가 가리키는 브랜치에 추가할 수 있게 해준다.
  • 다른 브랜치에 있는 커밋을 지금 내 브랜치에 가져와서 커밋할 수 있는 것
git cherry-pick abc123
git cherry-pick abc123..bfe123
git cherry-pick abc123^..gde123

rebase

동작 과정

이미 푸시한 커밋에 대해서는 rebase하지 말기

rebase 전

위과 같은 커밋 히스토리를 가질 때, feature/rebase-test 브랜치에서 git rebase develop를 실행했을 때 동작 과정은 아래와 같다.

rebase 후

  1. 두 브랜치가 나뉘기 전인 공통 커밋으로 이동하고 나서 그 커밋부터 지금 checkout한 브랜치가 가리키는 커밋까지 diff를 차례로 만들어 어딘가에 임시 저장
  2. develop은 공통 커밋에서 자기가 한 커밋까지 이동 (feat: develop)
  3. feature/rebase-test에 1에서 저장해둔 diff 쭉 저장
    • feature/rebase-test에는 develop에서만 커밋한 내용도 포함되어 있다.
  4. 마지막에 develop에서 git merge feature/rebase-test로 마무리

merge 후

활용 - 커밋 히스토리 깔끔하게

Git - git-rebase Documentation

rebase로 커밋 메세지 수정하기

  1. git rebase -i HEAD~2 : 현재 작업중인 브랜치의 가장 최근 commit 2개를 보여준다.
  2. pick을 reword로 수정
  3. 커밋 매세지 수정

→ 리눅스 vi 처럼 수정하면 된다.

반응형