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하기 전
- main branch에서 remote main을 pull 받기
- push할 feature branch로 이동
git rebase -i main 진행

rebase 하는 동안 squash를 진행할 때
-
가장 오래된 commit pick

나머지는 그냥 s 입력
-
다른 커밋 메세지는 가장 오래된 commit을 기준으로 squash
-> 다른 커밋의 작업내역이 없어지진 않음!!
-
Esc -> :wq!

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

rebase 후 conflict 해결
- merge 했을 때 처럼 해결 후
git add .
git rebase --continue