개념잡기
Git으로 원격 저장소에 자료를 올리는 것을 push라하며, 반대로 자료를 다운받는 것을 pull이라고 한다.
원격 브랜치를 받아오는 방법
1. pull
pull은 다음 두 과정이 합쳐진 것으로 볼 수 있다.
- git fetch
원격 저장소에 변경사항이 있는지 확인하는 것.
- git merge
원격 저장소에 있는 브랜치를 합치는 것(병합).
즉, pull은 변경 내역을 확인하고 병합하는 것이라고 생각하면 편하다.
2. fetch + rebase
- rebase
베이스를 재정의하여 커밋 히스토리를 조작한다.
새로운 브랜치를 만들면 원본이 된 브랜치가 base가 된다.
Rebase를 사용하면 파생된 브랜치의 원본을 최신 브랜치로 변경해서 합치고 base를 새로운 베이스로 지정한다.
이렇게하면 결과적으로 하나의 브랜치에서 모든 작업이 진행된 것처럼 보인다.
Merge vs Rebase
Merge의 특징
- 충돌이 일어나면 한번에 해결 가능.
- 어떤 브랜치에서 merge가 발생했는지 알 수 있음.
- 브랜치와 커밋이 많아지면 히스토리가 복잡해져 알아보기 어려움.
Rebase의 특징
- 충돌이 일어난 부분부터 하나씩 해결.
- 하나의 브랜치로 깃 커밋 히스토리를 정리할 수 있음.
- Rebase가 이루어진 브랜치의 커밋이 새로 생성됨.
Rebase 사용 시 주의점
- 원격 저장소에 올라간 커밋을 Rebase하는 경우, 기존에 이미 올라간 기능이 한번 더 덧씌워져서 올라감.
다시 말해서, 하나의 커밋이 히스토리에 두번 올라감.
Rebase는 가급적 로컬에서만 사용하는 것이 좋을듯.
저도 어제 말하고 나서 찾아봤는데, 팀프로젝트에는 맞지않는 방식일듯해용 ㅎㅎ; 무능한 클라우드..