Git 브랜치 병합 여부 확인 방법

GitBeginner
지금 연습하기

소개

이 랩에서는 Git 브랜치가 다른 브랜치에 병합되었는지 효과적으로 확인하는 방법을 배우게 됩니다. git branch --merged 명령을 사용하는 주요 방법을 살펴보고, 사용법을 시연하고 출력을 해석할 것입니다.

또한, 병합 커밋의 존재 여부를 Git 로그에서 검사하여 병합 상태를 확인하고, 병합되지 않은 브랜치에서 명령의 동작을 테스트하여 이해도를 높일 것입니다. 이러한 실습 방식을 통해 Git 브랜치를 자신 있게 관리하고 깨끗한 리포지토리를 유지하는 기술을 습득할 수 있습니다.

git branch --merged 를 사용하여 확인

이 단계에서는 git branch --merged 명령을 사용하여 현재 브랜치에 완전히 통합된 브랜치를 확인하는 방법을 배우겠습니다. 이는 리포지토리를 정리하고 프로젝트의 상태를 이해하는 데 매우 유용한 명령입니다.

먼저, 프로젝트 디렉토리에 있는지 확인해 보겠습니다. 터미널을 열고 my-time-machine 디렉토리로 이동합니다.

cd ~/project/my-time-machine

이제 새 브랜치를 만들고 커밋을 해보겠습니다. 이는 별도의 브랜치에서 기능을 작업하는 일반적인 워크플로우를 시뮬레이션합니다.

git branch feature/add-greeting
git checkout feature/add-greeting
echo "Greetings from the feature branch!" >> greeting.txt
git add greeting.txt
git commit -m "Add greeting file"

커밋 후 다음과 유사한 출력을 볼 수 있습니다.

[feature/add-greeting a1b2c3d] Add greeting file
 1 file changed, 1 insertion(+)
 create mode 100644 greeting.txt

이제 master 브랜치로 다시 전환해 보겠습니다.

git checkout master

브랜치가 전환되었음을 나타내는 출력을 볼 수 있습니다.

Switched to branch 'master'

이제 feature/add-greeting 브랜치를 master에 병합해 보겠습니다.

git merge feature/add-greeting

병합이 성공했음을 나타내는 출력을 볼 수 있습니다.

Updating a1b2c3d..e4f5g6h
Fast-forward
 greeting.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 greeting.txt

feature/add-greeting 브랜치를 master에 병합했으므로, git branch --merged를 사용하여 현재 브랜치 (master) 에 병합된 브랜치를 확인해 보겠습니다.

git branch --merged

다음과 유사한 출력을 볼 수 있습니다.

* master
  feature/add-greeting

*는 현재 브랜치 (master) 를 나타냅니다. 출력은 masterfeature/add-greeting이 모두 나열되어 있음을 보여줍니다. 이는 feature/add-greeting의 모든 커밋이 이제 master 브랜치에 있음을 의미합니다.

어떤 브랜치가 병합되었는지 이해하는 것은 더 이상 필요하지 않고 안전하게 삭제할 수 있는 브랜치를 식별하는 데 도움이 되므로 중요합니다. 이렇게 하면 리포지토리가 깨끗하고 정리된 상태로 유지됩니다.

git log 로 병합 커밋 확인

이전 단계에서 feature/add-greeting 브랜치를 master에 병합했습니다. 이제 git log 명령을 사용하여 커밋 기록을 확인하고 병합 커밋이 있는지 확인해 보겠습니다.

여전히 ~/project/my-time-machine 디렉토리에 있는지 확인하십시오.

git log 명령을 실행합니다.

git log

가장 최근의 커밋이 맨 위에 있는 커밋 목록이 표시됩니다. 병합을 나타내는 커밋 메시지를 찾습니다. 다음과 유사하게 표시될 것입니다.

commit e4f5g6h7i8j9k0l1m2n3o4p5q6r7s8t9u0v1w2x (HEAD -> master)
Merge: a1b2c3d f0e1d2c
Author: Jane Doe <jane.doe@example.com>
Date:   Mon Aug 7 10:05:00 2023 +0000

    Merge branch 'feature/add-greeting'

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (feature/add-greeting)
Author: Jane Doe <jane.doe@example.com>
Date:   Mon Aug 7 10:03:00 2023 +0000

    Add greeting file

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <jane.doe@example.com>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

"Merge branch 'feature/add-greeting'" 메시지가 있는 커밋에 주목하십시오. 이는 feature/add-greeting 브랜치를 master에 병합했을 때 Git 이 자동으로 생성한 병합 커밋입니다. 이 커밋에는 "Merge:" 줄로 표시된 두 개의 부모 커밋이 있습니다. 하나의 부모는 병합 전 master 브랜치의 팁이고, 다른 하나는 feature/add-greeting 브랜치의 팁입니다.

git log 명령은 프로젝트의 기록을 이해하는 데 필수적입니다. 이를 통해 모든 커밋, 커밋 작성자, 작성 시기, 각 커밋에 포함된 변경 사항을 확인할 수 있습니다. 이는 디버깅, 진행 상황 추적 및 다른 사람과의 협업에 매우 유용합니다.

로그 보기를 종료하려면 q를 누르십시오.

병합되지 않은 브랜치로 테스트

이전 단계에서 git branch --merged가 완전히 통합된 브랜치를 표시하는 방법을 살펴보았습니다. 이제 현재 브랜치에 병합되지 않은 브랜치가 있는 경우 어떻게 되는지 살펴보겠습니다.

~/project/my-time-machine 디렉토리에 있고 master 브랜치에 있는지 확인하십시오. git status로 확인할 수 있습니다.

feature/add-farewell이라는 새 브랜치를 만들고 해당 브랜치로 전환해 보겠습니다.

git branch feature/add-farewell
git checkout feature/add-farewell

브랜치가 전환되었음을 나타내는 출력을 볼 수 있습니다.

Switched to branch 'feature/add-farewell'

이제 새 파일을 만들고 이 브랜치에서 커밋을 해보겠습니다.

echo "Farewell from the farewell branch!" > farewell.txt
git add farewell.txt
git commit -m "Add farewell file"

커밋 후 다음과 유사한 출력을 볼 수 있습니다.

[feature/add-farewell a1b2c3d] Add farewell file
 1 file changed, 1 insertion(+)
 create mode 100644 farewell.txt

이제 master 브랜치로 다시 전환해 보겠습니다.

git checkout master

브랜치가 전환되었음을 나타내는 출력을 볼 수 있습니다.

Switched to branch 'master'

이제 master 브랜치에 있으며, feature/add-farewell 브랜치에는 master에 없는 커밋이 포함되어 있습니다.

git branch --merged를 다시 사용해 보겠습니다.

git branch --merged

다음과 유사한 출력을 볼 수 있습니다.

* master
  feature/add-greeting

feature/add-farewell이 출력에 나열되지 않음을 확인하십시오. 이는 feature/add-farewell에서 만든 커밋이 master 브랜치에 병합되지 않았기 때문입니다.

이제 git branch --no-merged 명령을 사용해 보겠습니다. 이 명령은 현재 브랜치에 병합되지 않은 브랜치를 표시합니다.

git branch --no-merged

다음과 유사한 출력을 볼 수 있습니다.

  feature/add-farewell

이 출력은 feature/add-farewellmaster 브랜치에 없는 커밋이 포함되어 있으므로 올바르게 표시됩니다.

git branch --mergedgit branch --no-merged 명령은 브랜치를 관리하는 강력한 도구입니다. 이를 통해 완료되어 삭제할 수 있는 브랜치와 아직 개발 중이며 병합해야 하는 브랜치를 추적할 수 있습니다.

요약

이 랩에서는 Git 브랜치가 현재 브랜치에 병합되었는지 확인하는 방법을 배웠습니다. 먼저 git branch --merged 명령을 사용하여 시작했습니다. 이 명령은 현재 브랜치의 팁에서 도달할 수 있는 모든 브랜치를 나열하여, 효과적으로 완전히 통합된 브랜치를 보여줍니다. 새로운 브랜치를 생성하고, 커밋을 만들고, 이를 master 브랜치에 병합한 다음, git branch --merged를 사용하여 병합을 확인하는 방식으로 이를 시연했습니다.

또한 병합 커밋을 찾아 git log를 사용하여 병합을 확인하는 방법도 탐구했으며, 병합되지 않은 브랜치로 명령을 테스트하여 출력의 차이점을 이해했습니다. 이 실습 경험은 Git 명령을 사용하여 저장소의 브랜치 상태를 관리하고 이해하는 방법에 대한 실질적인 이해를 제공했습니다.