소개
이 랩에서는 Git 브랜치에 특정 커밋이 포함되어 있는지 확인하는 방법을 배우겠습니다. 먼저, git log 명령과 메시지 내용 또는 작성자를 기반으로 커밋을 검색하기 위한 필터링 옵션을 살펴보겠습니다. 다음으로, 특정 커밋을 포함하는 브랜치를 효율적으로 결정하기 위해 git branch --contains 명령을 활용할 것입니다. 마지막으로, 해시를 사용하여 커밋의 존재 여부를 직접 확인하여 결과를 검증할 것입니다.
git log 실행하여 커밋 검색
이 단계에서는 git log 명령을 사용하여 프로젝트 기록에서 특정 커밋을 검색하는 방법을 살펴보겠습니다. 프로젝트가 커지고 더 많은 커밋을 수행함에 따라 git log 출력은 매우 길어질 수 있습니다. Git 은 이 기록을 필터링하고 검색할 수 있는 강력한 옵션을 제공합니다.
먼저, 프로젝트 디렉토리에 있는지 확인해 보겠습니다.
cd ~/project/my-time-machine
이제 검색할 기록을 갖도록 몇 개의 커밋을 더 추가해 보겠습니다. 새 파일을 추가하고 기존 파일을 변경합니다.
새 파일 생성:
echo "This is my second file." > second_file.txt
새 파일 추가 및 커밋:
git add second_file.txt
git commit -m "Add a second file"
다음과 유사한 출력을 볼 수 있습니다.
[master a1b2c3d] Add a second file
1 file changed, 1 insertion(+)
create mode 100644 second_file.txt
이제 message.txt 파일을 수정해 보겠습니다.
echo "Adding another line." >> message.txt
변경 사항 추가 및 커밋:
git add message.txt
git commit -m "Update message.txt"
다음과 유사한 출력을 볼 수 있습니다.
[master e4f5g6h] Update message.txt
1 file changed, 1 insertion(+)
이제 여러 커밋이 있으므로 git log를 사용하여 기록을 확인해 보겠습니다.
git log
세 개의 모든 커밋이 나열됩니다. q를 눌러 로그 보기를 종료합니다.
커밋 메시지에 특정 단어가 포함된 커밋을 검색하려면 --grep 옵션을 사용할 수 있습니다. "message"라는 단어가 포함된 커밋을 검색해 보겠습니다.
git log --grep "message"
이 명령은 메시지에 "message"라는 단어가 포함된 커밋만 표시합니다. 첫 번째 및 세 번째 커밋을 볼 수 있습니다.
--author 옵션을 사용하여 작성자별로 커밋을 검색할 수도 있습니다. "Jane Doe"가 작성한 커밋을 검색해 보겠습니다 (설정에서 구성한 이름).
git log --author "Jane Doe"
이렇게 하면 "Jane Doe" 작성자가 만든 모든 커밋이 표시됩니다. 이 경우 세 개의 모든 커밋이 표시됩니다.
--grep 및 --author와 같은 옵션을 사용하여 git log를 사용하는 것은 더 큰 프로젝트를 탐색하고 특정 변경 사항 또는 기여를 찾는 데 필수적입니다. 프로젝트 기록에 대한 강력한 검색 엔진을 갖는 것과 같습니다!
git branch --contains 를 사용하여 커밋 확인
이 단계에서는 git branch --contains 명령을 사용하여 특정 커밋을 포함하는 브랜치를 찾는 방법을 배우겠습니다. 여러 브랜치가 있고 특정 변경 사항이 어디에 있는지 알고 싶을 때 유용합니다.
먼저, 프로젝트 디렉토리에 있는지 확인합니다.
cd ~/project/my-time-machine
이 명령을 시연하기 위해 새 브랜치를 만들어 보겠습니다. feature-branch라고 부르겠습니다.
git branch feature-branch
이 명령은 새 브랜치를 만들지만 전환하지는 않습니다. git branch를 사용하여 브랜치를 볼 수 있습니다.
git branch
다음과 유사한 내용이 표시되며, master가 강조 표시됩니다 (현재 브랜치임을 나타냄).
* master
feature-branch
이제 첫 번째 커밋의 해시를 얻어 보겠습니다. git log --oneline을 사용하여 커밋 해시가 있는 축약된 로그를 볼 수 있습니다.
git log --oneline
다음과 유사한 출력을 볼 수 있습니다 (해시는 다를 것입니다).
e4f5g6h (HEAD -> master) Update message.txt
a1b2c3d Add a second file
abcdef0 Send a message to the future
첫 번째 커밋 ("Send a message to the future") 의 해시를 복사합니다. 위의 예에서 abcdef0입니다.
이제 첫 번째 커밋의 해시와 함께 git branch --contains를 사용해 보겠습니다.
git branch --contains abcdef0
abcdef0을 첫 번째 커밋의 실제 해시로 바꿉니다.
출력은 master와 feature-branch를 모두 표시해야 합니다.
* master
feature-branch
이는 "Send a message to the future" 커밋이 master 및 feature-branch 브랜치 모두에 존재함을 알려줍니다. master 브랜치에서 feature-branch를 만들었고 첫 번째 커밋이 이미 master의 일부였기 때문에 이는 타당합니다.
이제 마지막 커밋 ("Update message.txt") 의 해시를 얻어 보겠습니다. 위의 예에서 e4f5g6h입니다.
마지막 커밋의 해시와 함께 git branch --contains를 사용합니다.
git branch --contains e4f5g6h
e4f5g6h를 마지막 커밋의 실제 해시로 바꿉니다.
출력은 master만 표시해야 합니다.
* master
이는 마지막 커밋이 feature-branch를 만든 후 master 브랜치에서 만들어졌기 때문입니다. 따라서 feature-branch는 이 커밋을 포함하지 않습니다.
git branch --contains 명령은 커밋과 브랜치 간의 관계를 이해하는 강력한 도구로, 특정 변경 사항이 어디에 통합되었는지 추적하는 데 도움이 됩니다.
커밋 해시로 검증
이 단계에서는 커밋 해시를 사용하여 프로젝트 기록의 특정 지점을 참조하는 연습을 해보겠습니다. Git 의 각 커밋에는 고유한 해시가 있으며, 이는 지문과 같은 역할을 합니다. 이 해시를 사용하여 특정 커밋의 세부 정보를 보거나 해당 시점으로 돌아갈 수도 있습니다.
먼저, 프로젝트 디렉토리에 있는지 확인합니다.
cd ~/project/my-time-machine
해시를 얻기 위해 커밋 로그를 다시 살펴보겠습니다.
git log --oneline
다음과 유사한 출력을 볼 수 있습니다 (해시는 다를 것입니다).
e4f5g6h (HEAD -> master) Update message.txt
a1b2c3d Add a second file
abcdef0 Send a message to the future
이제 해시를 사용하여 첫 번째 커밋의 세부 정보를 살펴보겠습니다. 첫 번째 커밋 ("Send a message to the future") 의 해시를 복사합니다. 위의 예에서 abcdef0입니다.
커밋 해시 다음에 git show 명령을 사용합니다.
git show abcdef0
abcdef0을 첫 번째 커밋의 실제 해시로 바꿉니다.
이 명령은 작성자, 날짜, 커밋 메시지 및 해당 커밋에 도입된 변경 사항을 포함하여 해당 특정 커밋에 대한 자세한 정보를 표시합니다. 이 커밋에서 message.txt 파일이 생성되었음을 알 수 있습니다.
q를 눌러 git show 보기를 종료합니다.
이제 두 번째 커밋 ("Add a second file") 의 세부 정보를 살펴보겠습니다. git log --oneline 출력에서 해시를 복사합니다. 위의 예에서 a1b2c3d입니다.
두 번째 커밋의 해시와 함께 git show를 사용합니다.
git show a1b2c3d
a1b2c3d를 두 번째 커밋의 실제 해시로 바꿉니다.
이렇게 하면 second_file.txt가 생성된 두 번째 커밋의 세부 정보가 표시됩니다.
마지막으로, 마지막 커밋 ("Update message.txt") 의 세부 정보를 살펴보겠습니다. 해시를 복사합니다. 위의 예에서 e4f5g6h입니다.
마지막 커밋의 해시와 함께 git show를 사용합니다.
git show e4f5g6h
e4f5g6h를 마지막 커밋의 실제 해시로 바꿉니다.
이렇게 하면 message.txt에 한 줄이 추가된 마지막 커밋의 세부 정보가 표시됩니다.
커밋 해시와 함께 git show를 사용하면 프로젝트 기록에서 특정 커밋의 내용과 변경 사항을 검사할 수 있습니다. 이는 디버깅, 기능 구현 방법 이해 또는 단순히 과거 작업 검토에 매우 유용합니다.
요약
이 랩에서는 Git 브랜치에 특정 커밋이 포함되어 있는지 확인하는 방법을 배웠습니다. 먼저, 프로젝트 기록 내에서 커밋을 찾기 위해 커밋 메시지를 검색하는 --grep 및 작성자별로 검색하는 --author와 같은 필터링 옵션과 함께 git log 명령을 살펴보았습니다.
다음으로, git branch --contains 명령을 사용하여 브랜치에 특정 커밋이 포함되어 있는지 직접 확인하는 방법을 배우고, 마지막으로 커밋 해시를 사용하여 이를 검증할 것입니다.



