본문 바로가기
Programming

Git브랜치 분기점 확인하는 방법

by 느리게 걷는 즐거움 2024. 7. 15.
반응형

Git브랜치 분기점 확인하는 방법

Git은 소스 코드 관리를 위해 널리 사용되는 분산 버전 관리 시스템입니다. 많은 프로젝트에서 여러 브랜치를 사용해 개발을 진행하는데, 가끔 각 브랜치가 어디서 분기되었는지 확인해야 할 때가 있습니다. 이 글에서는 Git 명령어를 사용하여 브랜치가 어디서 나누어졌는지 확인하는 방법을 알아보겠습니다.

git merge-base 명령어

`git merge-base` 명령어는 두 브랜치의 공통 조상을 찾는 데 사용됩니다. 두 브랜치의 공통 조상이 바로 브랜치가 나누어진 지점입니다.

예시

1. `main` 브랜치와 `feature-branch`가 있다고 가정합니다.

2. `feature-branch`가 `main` 브랜치에서 어디서 분기되었는지 확인하려면 다음 명령어를 사용합니다

   git merge-base main feature-branch

3. 이 명령어는 `main` 브랜치와 `feature-branch` 브랜치가 공통으로 가지고 있는 마지막 커밋의 해시를 출력합니다. 이 커밋이 두 브랜치가 분기된 지점입니다.

그래프 형식으로 브랜치 확인

`git log` 명령어를 그래프 옵션과 함께 사용하면, 브랜치의 분기 지점을 시각적으로 확인할 수 있습니다.

git log --graph --oneline --decorate --all

 

이 명령어는 모든 브랜치의 커밋 로그를 그래프 형식으로 보여주며, 각 브랜치가 어디서 분기되었는지 쉽게 파악할 수 있습니다.

스크립트를 사용하여 모든 브랜치의 분기점 확인

모든 브랜치가 어디서 분기되었는지 한 번에 확인하려면, 다음과 같은 스크립트를 사용할 수 있습니다.

# 기준 브랜치를 설정합니다.
base_branch="main"

# 기준 브랜치를 제외한 모든 브랜치를 나열합니다.
branches=$(git branch --format='%(refname:short)' | grep -v "^$base_branch$")

# 각 브랜치의 분기점을 찾습니다.
for branch in $branches; do
  base_commit=$(git merge-base $base_branch $branch)
  echo "$branch branched from $base_branch at commit $base_commit"
done


이 스크립트는 기준 브랜치를 `main`으로 설정하고, 이를 제외한 모든 브랜치의 분기점을 찾아 출력합니다. 필요에 따라 기준 브랜치를 변경할 수 있습니다.

코드 설명
# 기준 브랜치를 설정합니다.
base_branch="main"

이 줄은 기준 브랜치를 설정합니다. 여기서는 main 브랜치를 기준으로 합니다. 이 기준 브랜치와 다른 브랜치들이 어디서 분기되었는지를 확인할 것입니다.

# 기준 브랜치를 제외한 모든 브랜치를 나열합니다.
branches=$(git branch --format='%(refname:short)' | grep -v "^$base_branch$")

이 줄은 기준 브랜치를 제외한 모든 브랜치의 이름을 가져옵니다.

  • git branch --format='%(refname:short)': 현재 Git 리포지토리의 모든 브랜치를 짧은 형식으로 나열합니다.
  • grep -v "^$base_branch$": 기준 브랜치를 목록에서 제외합니다. 여기서는 main 브랜치를 제외합니다. grep -v는 주어진 패턴과 일치하지 않는 모든 줄을 출력합니다.
# 각 브랜치의 분기점을 찾습니다.
for branch in $branches; do
  base_commit=$(git merge-base $base_branch $branch)
  echo "$branch branched from $base_branch at commit $base_commit"
done

이 부분은 기준 브랜치를 제외한 나머지 브랜치 각각에 대해 분기점을 찾고 출력합니다.

  • for branch in $branches; do : 기준 브랜치를 제외한 각 브랜치에 대해 반복합니다.
  • base_commit=$(git merge-base $base_branch $branch) : git merge-base 명령어를 사용하여 기준 브랜치와 현재 브랜치의 공통 조상(분기점)인 커밋 해시를 찾습니다.
  • echo "$branch branched from $base_branch at commit $base_commit": 현재 브랜치가 기준 브랜치로부터 어느 커밋에서 분기되었는지를 출력합니다.

결론

Git에서 브랜치가 어디서 분기되었는지 확인하는 것은 프로젝트의 히스토리를 이해하고 관리하는 데 중요한 작업입니다. `git merge-base` 명령어와 `git log` 명령어를 활용하면 각 브랜치의 분기 지점을 쉽게 찾을 수 있습니다. 위의 방법들을 통해 Git 저장소의 브랜치 관리를 효율적으로 할 수 있기를 바랍니다.

반응형

'Programming' 카테고리의 다른 글

Git Merge 사용방법  (0) 2024.07.24
Git Branch 만들기  (0) 2024.07.23
Leetcode 알고리즘 스터디 (Palindrome Number)  (0) 2024.07.03
C++ Queue 사용법  (0) 2024.07.03
C++ Stack 사용법  (0) 2024.07.03