같이 협업하는 사람이 몇 없다면 굳이 rebase를 쓰지 않아도 되지만, 팀 단위가 몇 백명 이상이 됐을 때 각자 commit을 2-3개만 날려도 검토해야 할 것이 수백개로 늘어나도 merge 할 때마다 commit이 새로 쌓인다.
따라서 git의 history를 깨끗하게 사용하기 위해 rebase가 필요하다.
rebase
ㅁ base: 기초, 기본
ㅁ re-base: 기초를 다시 세우다
=> 현재 내 branch를 master와 동일시 하고(같은 base 사용), commit을 하나로 합치는 작업이다.
단점이 있다면 conflict가 엄청 많이 난다.
각 commit 마다 생기는 conflict를 단계적으로 해결해야 하고, 잘 못하다간 내가 썼던 코드가 통째로 없어져 버릴 수 있으니 충분히 숙련 후 사용하길 권장한다.
rebase 방법
1. 브랜치 생성 후, 작업한 것을 add, commit, push 후 PR을 날린다
2. 마스터 브랜치로 이동, git checkout master
3. 마스터 pull, git pull origin master
4. rebase
1) 마스터 브랜치에서 할 경우, git rebase -i master 브랜치명
2) 브랜치에서 할 경우, git rebase -i master
5. commit 하나로 합치기
제일 위에 것만 pick으로 놔둬서 commit으로 사용하고, 밑에 꺼는 s로 commit 합친 후 저장
6. conflict가 나온 다면
- 해당 파일 수정 후, git add .
-
a) git rebase --continue
b) git rebase --abort (rebase 중단, 뭔가 꼬일 거 같을 때 사용)
- 내가 남기고 싶은 commit message로 내용 바꾼 후 저장
- 다 수정하고, git push origin 브랜치명
- PR 날리기
7. 그 이후,
- PR 날리고 수정하고 commit을 날렸다면 다시 반복
- git checkout master
- git pull origin master
- git rebase -i master feature/브랜치명
- git push origin feature/브랜치명 -f (강제 push)
'■ 프로그래밍 > Front-end' 카테고리의 다른 글
웹 동작 원리 (SPA, CSR, SSR) (0) | 2020.05.14 |
---|---|
Git & GitHub (3) - branch (0) | 2020.05.01 |
데이터 자료 구조 (5) - Stack & Queue (0) | 2020.04.20 |
자료 구조(Data Structure) (4) - Dictionary / HashMap / HashTable (0) | 2020.04.16 |
자료 구조(Data Structure) (3) - Set (0) | 2020.04.15 |