마스터 브랜치에 올라가 있는 커밋들을 내 브랜치에 반영하는 것
Git - git-rebase Documentation
머지 활용시 발생하는 문제 커버 가능
⇒ Rebase: 내 feature 브랜치의 베이스를 새로 설정하는 작업
Rebase(아래)와 Merge(위) 비교한 이미지
git rebase master를 하면 마스터 브랜치 자체를 리베이스 하는 것이 아닌 마스터 브랜치 위로 내 브랜치를 올리는 것,
피처 브랜치에 있는 커밋들은 재생성되고 히스토리는 마스터 브랜치 끝에 새롭게 쓰임
이미 공유한 커밋을 리베이스 하는 것 X
ex) 피처 브랜치에서 작업 중인데 마스터 브랜치를 리베이스 하는것
다른 개발자들도 마스터 브랜치를 당겨 가서 내가 이미 갖고 있는 커밋을 그들도 가지고 있을 것임
마스터 브랜치를 리베이스하면 커밋이 생성되는데 이 때 푸시를 시도하면 바로 문제가 발생
리베이스 명령어를 실행하는 브랜치가 변경되는 브랜치여야 함(feature branch)
git rebase --abort
git rebase --continue
git rebase -i HEAD~4
: HEAD 뒤 숫자는 현재 시점으로부터 몇 개까지 커밋을 확인 할 건지 개수
커밋 이력이 지저분할 때 사용
브랜치를 새로 생성한 후 git rebase -i HEAD~4
명령 입력
커밋 해시 cbee26b가 과거 시제이므로 현재 시제로 변경(added → add)
pick → reword / added → add
rebase 결과 이미지
pick 명령어를 전부 reword로 바꾸면 커밋 전부를 재작성하게 됨
add bootstrap하고 forgot to add bootstrap Javascript script 합쳐서 add bootstrap 커밋 하나로 병합
(커밋 삭제가 아닌 목록에서 지워서 깃 히스토리에서도 확인 할 수 없도록)
⇒ fixup
명령(fixup: 병합 후 커밋 폐기, squash: 병합 후 커밋 폐기 X)
git rebase -i HEAD~9
명령 실행my cat made this commit을 삭제하고 싶은 상황
git rebase -i HEAD~2
명령 실행