[Git]merge, rebase

Jimin_Note·2022년 7월 5일
0
post-thumbnail

Git flow

🌱basic flow

git rebase

용도 : git merge 대신!
즉, 병합할 때 사용
하지만 merge와는 완전히 다른 방식을 동작

🌱git merge

Feature/sign-up merge

Feature/sign-in merge

문제점

  • 불필요한 merger commit생성
    모든 feature branchakek "merge commit"가 남기 때문에 프로젝트 규모가 트다면 branch history가 지저분해질 수 있음.

🌱git rebase

단점

Conflict는 commit사이에서 일어나는 충돌인데
위 처럼 rebase를 사용하게되면 1,2,3 세 개의 커밋이 한번에 충돌 날 가능성이 있다.

해결

미리미리 충돌 해결하기!!

squash : 여러번 커밋한 이력을 하나의 커밋 이력으로 만들기

새로운 작업을 push하기 전

  1. main branch에서 remote main을 pull 받기
  2. push할 feature branch로 이동
  3. git rebase -i main 진행

rebase 하는 동안 squash를 진행할 때

  1. 가장 오래된 commit pick

    나머지는 그냥 s 입력

  2. 다른 커밋 메세지는 가장 오래된 commit을 기준으로 squash
    -> 다른 커밋의 작업내역이 없어지진 않음!!

  3. Esc -> :wq!

ADD : 1
ADD : 2
ADD : 3
-> ADD : 1,2,3

rebase 후 push

  1. rebase는 commit history를 정리하는 역할
  2. 같은 브랜치에서 rebase를 할 때 마다 history가 무조건 달라짐
  3. 하지만 git은 history가 다른 branch의 push 허용 X
  4. git push origin featurelogin -f 으로 강제 push 진행

rebase 후 conflict 해결

  1. merge 했을 때 처럼 해결 후 git add .
  2. git rebase --continue
profile
Hello. I'm jimin:)

0개의 댓글