
1. git flow

기본적인 git flow
2. git rebase
1. git merge를 하는 경우
Feature/sign-in
에서 Main
으로 git merge
하는 경우


merge를 할 때마다 모든 commit이 그대로 옮겨진다
2. git rebase를 하는 경우

- 불필요한 merge commit 제거
- 같은 작업을 진행한 commit끼리 모으기

Feature/sign-in
의 시작이 Main
브랜치의 마지막 커밋부터 시작된다
3. squash

3. git rebase 사용법
- 새로운 작업을 모두 마치고 push하기 전
- 메인 브랜치로 이동하여 remote 메인 브랜치를 pull
- 내가 push할 feature 브랜치로 이동
git rebase -i master(main)
- rebase를 하는 동안 squash 진행할 때
- 가장 오래된 commit을 pick
- 다른 커밋 메시지는 가장 오래된 commit 기준 squash
Esc
➡:wq
로 창 빠져나오기
- 수정용 에디터가 하나 더 나타났을 때
- 최종적으로 rebase된 커밋의 내용 작성
- 현재까지 적은 커밋 메시지가 전부 나타난다
- 불필요한 내용 제거 후 현재 수정 내역에 대한 커밋 메시지 작성
Esc
➡:wq
로 창 빠져나오기
- 성공했을 때
- git log로 깔끔해진 커밋 메시지 확인
- push
- rebase 후 push 할 때
- rebase는 commit history를 정리하는 역할인데 같은 브랜치에서 rebase를 할 때마다 달라진 commit history 때문에 push가 되지 않음
git push origin feature/이름 -f
로 force push 진행
- rebase 충돌 해결 방법
- 충돌이 일어나면 rebase 도중 멈춘다.
- 터미널에서
(reabse ~ 1/6)
처럼 메시지로 rebase 진행중임으로 표시
- 충돌이 발생한 코드를 수정
git add .
(commit은 하지 않음)
git rebase --continue
- 충돌이 여러 번 발생할 때 3~5번 반복
- 계속 해결이 안 되는 경우
git rebase --abort
로 rebase 진행 전 상황으로 돌아가기