Git에서 원하는 커밋 해시(Commit Hash)를 찾아야 할 경우가 있겠죠. 예를들어...

하나. 특정 커밋의 변경 내용 등을 확인할 때
둘. 체리픽으로 해당 커밋을 다른 브랜치에 적용할 때

위의 경우들처럼 git에서 커밋 메시지를 검색해서 찾으려면 어떻게 하면 될까요? 아래에서 자세히 알아봅니다.



# Git 커밋 해시를 커밋 메시지에서 검색해서 찾기
일단 커밋 메시지는 커밋하는 시점에 항상 같이 저장합니다. 일반적으로 커밋을 설명하는 간략한 내용을 적기도 하죠. 예를들어 아주 오래 전에 아래와 같은 메시지로 저장된 해시가 존재한다고 생각해봅니다.

- Hash : a1b2c3d
- Commit message : 인사말 수정 완료

나중에 위의 커밋을 나중에 찾기 위해서 "인사말"이 포함된 커밋 메시지를 찾으려고 합니다. 만약 리눅스 환경이라면 파이프라인에 grep을 사용하면 되지 않을까 생각하시겠죠... 하지만 실제로 이 방법을 사용하면 해당 라인만 출력되기 때문에 다른 방법을 찾아야 합니다.


! git log와 grep 옵션 사용하기
git log는 커밋 내용을 보고 찾을 때 사용됩니다. 특히 최근에 커밋한 내용을 확인할 때 자주 사용되죠.

다행히도 log 명령어는 추가적으로 grep 옵션이 있습니다.

git log --grep "검색어"


이 명령어는 커밋 내용에서 특정 문구를 찾아 검색할 수 있는 기능으로 원하는 커밋을 찾을 때 매우 유용합니다. 그럼 어떻게 사용할 수 있는지 간략한 예제를 알아볼께요. 검색어는 "인사말"입니다.
> git log --grep "인사말"

위 명령어를 실행하면 "인사말"이 포함된 커밋을 모두 출력해줍니다. 매우 간단하죠.


@ 패턴으로 검색하는 방법
검색시 패턴을 사용하여 검색하여도 가능합니다. 만약 font 또는 Font 검색어를 기준으로 찾을 경우 아래처럼 사용하는 것도 가능합니다.
> git log --grep "[f|F]ont"

추가로 전체 브랜치에서 찾길 원하는 경우 --all 옵션을 사용합니다.
> git log --all --grep "인사말"


여기까지 커밋 메시지에서 검색어를 사용하여 찾는 방법에 대하여 알아보았습니다.