"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

오늘이군

git rebase 본문

삶../프로그래밍

git rebase

오늘이군 2020. 6. 3. 12:31
반응형

develop 에서 feature/epic 브랜치를 따고 
feature/epic 에서 각자 브랜치를 따서 작업하는 중간에

공통으로 사용하는 entity 같은 것을 누군가가 feature/epic 에 merge 를 해서
내 브랜치에 받아야 할 때 방법은 두가지가 있습니다.

1. merge

merge 는 intellij 우측하단의 Git Branches 에서
feature/epic 브랜치를 선택하여  Merge into Current 를 하면 merge 가 됩니다.

쉽지만 단점은 merge 를 위한 커밋을 하나 더 생성하게 되고, 이력 또한 모두 가지고 있게 되므로
git log 가 보기 어렵게 된다는 단점이 있습니다.

https://mirrors.edge.kernel.org/pub/software/scm/git/docs/git-merge.html

2. rebase 

말 그대로 브랜치의 base 를 다시 설정하는 기능입니다.

https://mirrors.edge.kernel.org/pub/software/scm/git/docs/git-rebase.html


git checkout feature/epic
git pull origin feature/epic

- 먼저 로컬 repo에 원격과 동기화된 feature/epic 브랜치가있어야 합니다. 없으면 rebase 도중 에러 나고요



git checkout feature/mybranch
git rebase -i feature/epic

- rebase 도중 커밋들을 하나로 합치고 싶으면 자동으로 뜨는 editor에서, 여러 pick 줄 중 맨 위의 것 외에는 pick을 squash로 바꿉니다. (창을 그냥 닫았다면 git rebase --edit-todo 로 다시 활성화 합니다.) 

- 진행하다가 다시 editor가 뜨면, 단 하나의 commit이 될 commit의 메시지를 입력합니다.



git push --force-with-lease

- 로컬에서 rebase 완료된 브랜치를 원격에 강제로 push 합니다. 
git push -f 도 사용할 수 있지만 안전상 --force-with-lease 사용합니다.


  • rebase 도중 오류가 나면 git rebase --abort 명령어로 취소할 수 있습니다.
  • rebase 도중 충돌이 발생하면 소스코드에서 충돌 해결후 git rebase --continue 명령어로 rebase를 재개 할 수 있습니다.
반응형

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
Comments