GIT rebase
2022. 6. 21. 22:07
반응형
rebase
- 서로 다른 두브랜치를 병합시킬 때
- 여러개의 commit 이력을 1개의 새로운 commit 으로 합칠 때(되감기)
- git merge 전략 중 하나.
- 내가 작업한 브랜치에 master의 최신 이력을 적용시킬 때(브랜치 현행화)
- 개인 브랜치는 commit history 깔끔하게 관리하고 싶을 경우 수행 추천.
- 공동 작업 브랜치 or master에는 수행하지 말자(remote master에 merge된 경우 기존의 commit tree가 완전히 달라지기에 동료들로 부터.....)
rebase 활용
- feature 브랜치에서 작업을 하는 동안 main 브랜치가 release, hotfix 등 변경되었고 merge 하려 할 때 충돌이 발생, feature 브랜치에서 main 브랜치를 rebase 진행한 후 main으로 merge를 수행한다.
- main 브랜치의 내용을 현재 작업 중인 feature 브랜치로 병합할 때(최신 commit으로 base 옴겨주기)
git rebase -i HEAD~2,3 //합칠 개수
git rebase -i HEAD~3 //마지막부터 몇번째 commit 까지 개수
pick -> squash 변경 후 vi 저장 //합칠경우 (lastest 부터 역순으로!!!!)
pick -> drop 변경 후 vi 저장 //특정 commit 삭제
git log //합쳐진 commit 확인 or git reflog
git commit -m "주석 수정" //합친 후 주석 수정 or 새로운 commit 안남길 경우 건너뜀
git rebase --continue //rebase 완료
git rebase --abort //rebase 롤백시
git push origin {branch} -f //force remote push
- rebase invalid upstream 'HEAD~n' 오류 발생시 처리
git rebase --interactive HEAD~5 //위 순서에 맞춰 vi 편집 후 force push
반응형