Git

중급 02. pull.rebase와 pull.ff 설정 실무 가이드

git pull 시 발생하는 divergent branches 경고 해결법, pull.rebase vs pull.ff only의 장단점과 실무 팀 권장 전역 설정

· 1min read · 3 views
중급 02. pull.rebase와 pull.ff 설정 실무 가이드

핵심 요약

git pull 시 발생하는 divergent branches 경고 원인, pull.rebase vs pull.ff only 비교 및 실무 팀 권장 전역 설정

Git 최신 버전에서 git pull을 실행하면 아래와 같은 긴 노란색 경고(Warning)를 한 번쯤 마주치게 됩니다:

warning: Pulling without specifying how to reconcile divergent branches is discouraged.
You can squelch this message by running one of the following commands:
  git config pull.rebase false  # merge (the default strategy)
  git config pull.rebase true   # rebase
  git config pull.ff only       # fast-forward only

이 경고는 "로컬과 원격의 커밋이 서로 갈라졌을 때(Divergent), Git이 어떤 전략으로 합쳐야 할지 명확히 정책을 정해달라"는 의미입니다. 이 문서에서는 3가지 옵션의 결정적 차이와 실무 팀 권장 설정을 정리합니다.


1. 3가지 pull 전략 비교

옵션동작 방식장단점
pull.rebase false (기본값)원격 커밋과 로컬 커밋을 Merge Commit을 만들어 합침pull 할 때마다 "Merge branch 'develop' of ..." 같은 불필요한 커밋이 계속 생겨 히스토리가 지저분해짐
pull.rebase true (실무 추천)원격 최신 커밋 뒤로 내 로컬 커밋들을 Rebase로 재배치불필요한 머지 커밋 없이 깔끔한 1자 선형 히스토리를 유지함
pull.ff only (안전성 최우선)오직 Fast-Forward(단순 빨리감기)가 가능할 때만 pull을 허용하고, 갈라졌다면 즉시 중단내가 로컬에서 커밋을 만든 상태라면 pull이 거부되므로, 원격 변경사항을 실수로 덮어쓰지 않음

2. 실무 팀 권장 설정 2가지

추천 1: 개인 작업의 생산성을 위한 'Rebase' 전역 설정

가장 많은 시니어 개발자들이 선호하는 설정입니다. pull 할 때마다 생기는 지저분한 머지 커밋을 원천 차단합니다.

git config --global pull.rebase true

추천 2: 메인 브랜치(develop, main) 보호를 위한 'ff-only' 설정

로컬의 develop이나 main 브랜치에서는 직접 커밋을 만들지 않고 항상 원격과 똑같이 맞춰야 하므로, pull.ff only를 적용하면 혹시라도 발생할 로컬 오염을 막을 수 있습니다.

# 현재 레포의 특정 브랜치에만 ff-only 적용
git config branch.develop.rebase false
git config pull.ff only

3. 이미 갈라진 상태에서 충돌 발생 시 대처

pull.rebase true 상태에서 pull을 받다가 원격 변경사항과 로컬 변경사항이 충돌하면 rebase 충돌 상태로 진입합니다.

# 1. 충돌 파일 확인 및 수정
git status

# 2. 마커 제거 후 스테이징
git add <충돌파일>

# 3. 리베이스 계속 진행
git rebase --continue

Related Docs

Comments (0)

No comments yet. Be the first to comment!

Leave a Comment

로그인 후 댓글을 남길 수 있습니다.