나는 rebase를 각 브런치의 커밋들을 보기 쉽게 정렬하는 것으로 이해했다.

각자 작업량을 한 곳에 묶은 후 최신 master브랜치 시점에 push하여 merge를 진행하는것이 rebase의 개념이다.

flow

1.

  • git checkout master
    작업하는 브랜치에서 나의 local master로 이동

  • git pull origin master
    각각의 다른 사람들이 작업 후 merge된 remote mater를 나의 master로 가져와 최신화 해준다.

2. git checkout (작업중인 브랜치)

  • 작업 중인 브랜치로 이동 후 git rebase -i master를 해준다.(1차 프젝 때 했던 git merge 느낌)

  • 명령어가 실행 되었으면 commit 한 횟수만큼 pick으로 시작하는 commit 목록들이 보인다.

3. squash

  • commit 목록에서 맨 위의 commit 빼고 나머지 commit 앞에 s 를 써준다 (s는 rebase 커멘드 중 하나로 squash의 약자이다.)
  • 그 후 esc를 누르고 shift +; 후 wq를 입력해 저장 해 준다. 그럼 squash가 반영된다.

4. conflict 발생시 해결

  • squash 후 conflict가 발생하면 평소처럼 해결하고
    git add .git rebase --continue입력
    (여기서 commit들을 한번에 conflict를 해결하려고 하면 맨 처음 conflict난 곳에서 부터 하나씩 수정 후rebase --continue해줘야 된다...)
    되도록이면 commit이 2~3개 쌓이면 squash해주자!!!

5. 마지막 commit 메세지 편집

  • conflict가 해결되면 successfully ~~ 가 나타난다.
    rebase를 마쳤으므로 commit메세지를 squash때 처럼 들어가서 수정하고 esc를 누르고 shift +; 후 wq하고 저장해주자

6. rebase결과 git에 push하기

conflict를 해결 했으면 git에서 push할 때 거부하게 되는데 이때 pushdp -f를 붙여 강제로 push하면 된다.
(강제 push는 전 걸 날리고 내 것을 올리는 것이기 때문에 조심 조심 또 조심해서 사용하자!!)

0개의 댓글

Powered by GraphCDN, the GraphQL CDN