GitHub Compare View에서 Behind와 Ahead의 의미

GitHub에서 브랜치를 비교할 때 사용하는 "Compare" 기능은 두 브랜치 간의 커밋 차이를 보여줍니다.

Compare View를 사용할 때 사용되는 'Behind'와 'Ahead'라는 용어가 존재합니다.

 

각각은 브랜치가 얼마나 차이가 나는지 나타내는 기능입니다.

이번 포스팅에서는 Behind와 Ahead가 무엇을 의미하는지 알아보겠습니다.


Behind란?

Behind는 현재 브랜치가 비교 대상 브랜치에 비해 뒤처진 커밋 수를 의미합니다.
즉, 비교 대상 브랜치에는 새로운 커밋이 추가되었지만, 현재 브랜치에는 이 변경사항이 반영되지 않은 상태입니다.

Behind 상태 예시

  • 현재 브랜치: feature-branch
  • 비교 대상 브랜치: main
  • Behind: 3

이 경우, main 브랜치에는 3개의 새로운 커밋이 있고, feature-branch에는 아직 이 변경사항이 반영되지 않은 상태를 의미합니다.

Behind 상태 해결 방법

Behind 상태를 해소하려면 비교 대상 브랜치의 변경사항을 현재 브랜치로 병합해야 합니다. 이를 위해 아래 명령어를 사용할 수 있습니다

# main 브랜치의 변경사항을 가져오기
git pull origin main

pull 명령어를 통해, main 브랜치의 최신 커밋이 feature-branch로 merge 할 수 있습니다.


Ahead란?

Ahead는 현재 브랜치가 비교 대상 브랜치보다 앞서 있는 커밋 수를 의미합니다.
즉, 현재 브랜치에서 새로운 커밋이 추가되었지만, 이 커밋은 아직 비교 대상 브랜치에 반영되지 않은 상태입니다.

Ahead 상태 예시

  • 현재 브랜치: feature-branch
  • 비교 대상 브랜치: main
  • Ahead: 2

이 경우, feature-branch에는 2개의 새로운 커밋이 있지만, main 브랜치에는 아직 이 변경사항이 포함되지 않은 상태를 의미합니다.

Ahead 상태 해결 방법

Ahead 상태를 해결하려면 현재 브랜치의 커밋을 비교 대상 브랜치로 푸시하거나 병합해야 합니다. 아래 방법 중 하나를 선택할 수 있습니다:

1. 병합 요청 (Pull Request) 생성

GitHub에서 Pull Request를 생성하여 main 브랜치로 커밋을 merge 합니다.

2. 커밋 푸시

명령어를 사용하여 현재 브랜치의 커밋을 원격 저장소에 푸시합니다.

git push origin feature-branch

 


Behind와 Ahead 상태 통합 예시

GitHub Desktop으로 보는 Behind/Ahead

GitHub의 Compare View에서 아래와 같은 상태가 나왔다고 가정해보겠습니다.

  • Behind 3 / Ahead 2

상황

  • Behind 3: main 브랜치에 3개의 커밋이 추가되었으나, feature-branch에는 반영되지 않은 상태
  • Ahead 2: feature-branch에서 2개의 커밋이 추가되었으나, main 브랜치에 병합되지 않은 상태

해결 과정

  1. Behind 상태 해결 (동기화)
    • git pull origin main 명령어로 main 브랜치의 변경사항을 feature-branch로 병합합니다
  2. Ahead 상태 해결 (Merge 요청 또는 푸시)
    • mege 충돌을 해결한 후, GitHub에서 Pull Request를 생성하거나 git push 명령어로 커밋을 푸시합니다