Git 커밋이 특정 브랜치에 있는지 확인하는 방법

GitBeginner
지금 연습하기

소개

이 랩에서는 특정 Git 커밋이 특정 브랜치 내에 존재하는지 확인하는 방법을 배우게 됩니다. 주어진 커밋을 포함하는 모든 브랜치를 식별하기 위해 git branch --contains 명령어를 살펴보고, 커밋의 히스토리와 통합 지점에 대한 통찰력을 제공합니다.

또한 브랜치 이름과 함께 git log를 사용하여 해당 브랜치의 히스토리 내에 커밋이 있는지 확인하는 방법과 여러 브랜치에서 커밋을 효율적으로 확인하는 방법을 배우게 됩니다. 이 랩은 Git 프로젝트의 히스토리를 이해하고 탐색하는 데 필요한 필수 기술을 제공합니다.

git branch --contains 커밋 실행

이 단계에서는 git branch --contains 명령어를 사용하여 특정 커밋을 포함하는 브랜치를 찾는 방법을 배우겠습니다. 이는 프로젝트의 히스토리를 이해하고 특정 변경 사항이 어디에 통합되었는지 확인하려는 경우 매우 유용한 명령어입니다.

먼저, my-time-machine 디렉토리에 있는지 확인해 보겠습니다. 터미널을 열고 다음을 입력합니다.

cd ~/project/my-time-machine

이제 새 파일을 만들고 커밋을 수행해 보겠습니다. 이렇게 하면 작업할 새 커밋이 생성됩니다.

echo "Another message for the future" > message2.txt
git add message2.txt
git commit -m "Add another message"

커밋 후 다음과 유사한 출력이 표시됩니다.

[master <commit-id>] Add another message
 1 file changed, 1 insertion(+)
 create mode 100644 message2.txt

이제 새 커밋이 있습니다. 이 새 커밋의 커밋 ID 를 찾아보겠습니다. git log --oneline을 사용하여 축약된 로그를 볼 수 있습니다.

git log --oneline

출력은 다음과 유사합니다.

<commit-id-2> (HEAD -> master) Add another message
<commit-id-1> Send a message to the future

목록에 있는 첫 번째 커밋 ID 는 "Add another message"에 대한 것입니다. 이 커밋 ID 를 복사합니다.

이제 이 커밋 ID 와 함께 git branch --contains를 사용해 보겠습니다. <commit-id-2>를 실제로 복사한 커밋 ID 로 바꿉니다.

git branch --contains <commit-id-2>

출력은 master 브랜치를 표시하여 이 커밋이 master 브랜치에 있음을 나타냅니다.

* master

git branch --contains <commit> 명령어는 커밋의 계보를 추적하는 데 도움이 되므로 강력합니다. 여러 브랜치가 있는 경우 이 명령어는 해당 특정 커밋을 포함하는 모든 브랜치를 나열합니다. 이는 프로젝트의 서로 다른 개발 라인을 통해 변경 사항이 어떻게 흐르는지 이해하는 데 필수적입니다.

git log 브랜치로 확인

이전 단계에서는 git branch --contains를 사용하여 특정 커밋을 포함하는 브랜치를 확인했습니다. 이제 브랜치 이름과 함께 git log 명령어를 사용하여 해당 브랜치의 히스토리를 확인해 보겠습니다. 이렇게 하면 해당 브랜치의 히스토리에 속하는 모든 커밋이 표시됩니다.

여전히 ~/project/my-time-machine 디렉토리에 있는지 확인합니다.

cd ~/project/my-time-machine

이전 단계에서 최신 커밋이 master 브랜치에 있다는 것을 알고 있습니다. master 브랜치에 대한 로그를 구체적으로 살펴보겠습니다.

git log master --oneline

master 브랜치의 커밋을 보여주는 다음과 유사한 출력이 표시됩니다.

<commit-id-2> (HEAD -> master) Add another message
<commit-id-1> Send a message to the future

이 출력은 두 커밋 모두 실제로 master 브랜치에 있음을 확인합니다. git log <branch-name>을 사용하는 것은 특정 브랜치의 히스토리를 검사하고 해당 브랜치의 팁에서 도달할 수 있는 모든 커밋을 확인하는 좋은 방법입니다.

git branch --contains <commit>git log <branch-name>의 출력을 비교하면 커밋과 브랜치 간의 관계를 이해하는 데 도움이 됩니다. git branch --contains는 히스토리의 어느 곳에서든 커밋을 포함하는 브랜치를 알려주는 반면, git log <branch-name>은 해당 특정 브랜치의 팁까지 이어지는 선형 히스토리를 보여줍니다.

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

여러 브랜치 확인

이 단계에서는 새 브랜치를 만들고 커밋이 여러 브랜치에 있을 때 git branch --contains가 어떻게 동작하는지 살펴보겠습니다. 이는 프로젝트의 브랜치 구조를 이해하는 데 있어 이 명령의 강력함을 더욱 잘 보여줄 것입니다.

먼저, ~/project/my-time-machine 디렉토리에 있는지 확인합니다.

cd ~/project/my-time-machine

이제 feature-branch라는 새 브랜치를 만들어 보겠습니다.

git branch feature-branch

이 명령어는 새 브랜치를 만들지만, 해당 브랜치로 전환하지는 않습니다. 여전히 master 브랜치에 있습니다.

브랜치를 확인해 보겠습니다.

git branch

master가 강조 표시된 상태로 (현재 브랜치를 나타냄) 두 브랜치가 모두 나열되어야 합니다.

* master
  feature-branch

이제 git log --oneline을 사용하여 최신 커밋의 커밋 ID 를 다시 가져오겠습니다.

git log --oneline

출력은 이전과 유사합니다.

<commit-id-2> (HEAD -> master, feature-branch) Add another message
<commit-id-1> Send a message to the future

최신 커밋이 이제 HEAD -> masterfeature-branch를 모두 표시하는 것을 확인하세요. 이는 feature-branch가 이 커밋에서 생성되었음을 의미합니다.

이제 이 커밋 ID 로 git branch --contains를 다시 사용해 보겠습니다. <commit-id-2>를 실제 커밋 ID 로 바꿉니다.

git branch --contains <commit-id-2>

이번에는 커밋이 masterfeature-branch의 히스토리에 모두 존재하므로 두 브랜치가 모두 표시되어야 합니다.

* master
  feature-branch

이는 git branch --contains가 특정 커밋을 히스토리에 가지고 있는 모든 브랜치를 어떻게 보여줄 수 있는지 보여줍니다. 이는 서로 다른 개발 라인에서 변경 사항이 병합되거나 통합된 위치를 추적하는 데 매우 유용합니다.

요약

이 랩에서는 Git 커밋이 특정 브랜치에 있는지 확인하는 방법을 배웠습니다. 먼저, 지정된 커밋을 포함하는 모든 브랜치를 나열하는 git branch --contains <commit-id> 명령을 사용했습니다. 이는 Git 저장소 내에서 변경 사항의 히스토리와 통합을 이해하는 데 필수적인 도구입니다.

그런 다음 git log <branch-name>을 사용하여 브랜치에 커밋이 있는지 확인하는 방법을 살펴보았습니다. 이 명령어는 특정 브랜치의 커밋 히스토리를 표시하여 대상 커밋이 해당 브랜치의 계보에 속하는지 시각적으로 확인할 수 있게 해줍니다. 마지막으로, 이러한 기술을 확장하여 여러 브랜치에서 커밋을 확인하는 방법을 살펴보고 프로젝트의 브랜치 구조 내에서 해당 커밋의 분포에 대한 포괄적인 보기를 제공했습니다.