🆀git rebase 와 git merge의 차이점을 설명하고, 각각 어떤 상황에서 사용하는 것이 적절한가
둘 다 브랜치를 병합하는 방식이다. 하지만 커밋 히스토리를 만들고 관리하는 방식에 큰 차이가 있다.
| 기능 | 결과 | |
| merge | 브랜치를 합치고 병합커밋을 만듦 | 히스토리 분기 후 병합 |
| rebase | 브랜치가 직선이 되도록 정리 | 히스토리 재작성. 깔끔해짐 |
<상황>
main: A---B---C
\
feature: D---E
<git merge main(기존 방식)>
main A---B---C
\\ \\
feature: D-----E---M ← merge 커밋 생성
➡️ 기존 방식에서는 정확이 어디서 병합되었는지 남는다. 그러나 커밋 히스토리에 병합커밋(M)을 따로 생성한다.
<git rebase main(선형으로 재정렬)>
main: A---B---C
\
feature: D'---E' ← 새로운 커밋처럼 재작성됨
➡️ 히스토리가 직선적으로 되어 깔끔하고 직관적이다. 그러나 원래의 커밋이 수정됨에 따라 공유된 브랜치에서 충돌할 가능성이 생긴다.
📌 rebase를 사용하는 경우
1. 히스토리를 직관적이고 깔끔하게 유지하고 싶을 때
2. PR 보내기 전에 내가 한 작업만 정리하고 싶을 때
3. 불필요한 병합 커밋없이 깔끔한 로그를 만들고 싶을 때
(강제 rebase는 특히 리스크가 크니 조심..!나도 알고 싶지 않았음)
🆀 git fetch와 git pull의 차이점을 설명하고, 각각을 어떤 상황에서 사용하는 것이 적절한가
git fetch
-원격 저장소의 변경사항을 로컬로 가져오지만 내 작업 디렉토리에 적용하지는 않는다.
✅git fetch 는 원격 저장소의 변경사항을 로컬 저장소로 가져오기만 함
✅변경사항이 내가 현재 작업 중인 브랜치에는 반영되지 않음
📌 git fetch를 사용하는 경우
1. 팀의 변경 사항을 확인만 하고 싶을 때
2. 병합 전에 어떤 변경이 있는지 검토하고 싶을 때
git pull
-원격 저장소의 변경사항을 로컬로 가져오고, 내 작업 부랜치에 병합한다.
✅원격 저장소의 변경사항을 가져온 뒤 현재 브랜치에 자동으로 병합함
📌 git pull을 사용하는 경우
1. 최신 변경사항을 바로 반영하고싶을 때
2. 협업도중에 빠르게 병합하고 다음 작업을 이어가야 할 때
<git fetch vs git pull>
| 구분 | git fetch | git pull |
| 동작 | 원격 저장소의 변경사항을 가져오기만 함 | 변경사항을 가져오고 현재 브랜치에 병함함 |
| 병합 여부 | 병합하지 않음 | 자동 병합 |
| 작업 영향 | 내 작업 브랜치에 영향❌ | 내 작업 브랜치 변경 가능성이 있음 |
| 위험도 | 낮음 | 높음(충돌가능성) |
끗
'📖위클리 페이퍼' 카테고리의 다른 글
| [👾코드잇] 위클리 페이퍼(4) (5) | 2025.07.09 |
|---|---|
| [👾코드잇] 위클리 페이퍼 (3) (0) | 2025.07.07 |
| [👾코드잇] 위클리 페이퍼 (1) (0) | 2025.06.23 |