📖위클리 페이퍼

[👾코드잇] 위클리 페이퍼 (2)

_채채_ 2025. 6. 24. 00:14

🆀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
동작 원격 저장소의 변경사항을 가져오기만 함 변경사항을 가져오고 현재 브랜치에 병함함
병합 여부 병합하지 않음 자동 병합
작업 영향 내 작업 브랜치에 영향 내 작업 브랜치 변경 가능성이 있음
위험도 낮음 높음(충돌가능성)