본문 바로가기
Git Hub

Git 브랜치가 원격과 갈라졌을 때 해결 방법

by Pymac 2025. 9. 4.
반응형


# Git 브랜치가 원격과 갈라졌을 때 해결 방법 (`diverged` 상황)

로컬에서 작업하다 보면 이런 메시지를 만날 수 있습니다:

```
On branch main
Your branch and 'origin/main' have diverged,
and have 1 and 1 different commits each, respectively.
  (use "git pull" if you want to integrate the remote branch with yours)

nothing to commit, working tree clean
```

이 말은 간단히 정리하면:

* 내 로컬 `main` 브랜치에 커밋이 1개 있음
* 원격 `origin/main` 브랜치에도 다른 커밋이 1개 있음
* 즉, 두 브랜치가 서로 다른 방향으로 **갈라졌다(diverged)** 는 뜻입니다.

---

## 해결 방법

### 1. Rebase로 깔끔하게 합치기 (추천)

내 커밋을 원격 브랜치 위로 올려 히스토리를 깔끔하게 유지하고 싶을 때:

git fetch origin
git rebase origin/main

* 원격 커밋 → 내 커밋 순서로 이어집니다.
* 협업 중이라면 충돌(conflict)이 날 수도 있는데, 수정 후:

  git add <파일명>
  git rebase --continue

---

### 2. Merge로 통합하기

히스토리 상관없이 빠르게 합치고 싶을 때:

git pull origin main --no-rebase

* 머지 커밋(merge commit)이 생깁니다.
* 협업 프로젝트에서는 "히스토리가 지저분해진다"는 단점이 있을 수 있습니다.

---

### 3. 원격 브랜치에 맞춰 강제 리셋하기

로컬 커밋이 불필요하고, 그냥 원격 상태로 덮어쓰고 싶을 때:

git reset --hard origin/main

* ⚠️ 로컬 커밋은 사라집니다. 꼭 필요 없을 때만 사용하세요.

---

## 정리

* **히스토리 깔끔 유지** → `rebase`
* **빠른 통합** → `merge`
* **로컬 커밋 버리기** → `reset --hard`

---

👉 협업 상황이라면 보통 **rebase**를 쓰는 게 좋고, 개인 프로젝트에서 단순히 합치려면 **merge**도 괜찮습니다.

---

원하시면 제가 블로그 포스팅용으로 \*\*마크다운 스타일 코드블록 + 간단한 그림 예시(브랜치 다이어그램)\*\*도 추가해드릴 수 있는데, 그림까지 있는 게 좋을까요?

반응형