HOWTO · Git

Git 커밋 기록에서 특정 문자열 검색

특정 문자열에 대한 Git 커밋 기록을 검색할 수 있습니다.

이 문서에서는 Git 기록에서 특정 문자열을 검색하는 데 사용하는 다양한 방법에 대해 설명합니다.

기록에서 커밋 메시지를 훑어보는 것이 항상 잘리는 것은 아닙니다. 특정 변수나 문자열의 영향을 받은 커밋을 알고 싶을 때가 있습니다.

git log 명령에 몇 가지 인수를 추가하여 문자열을 검색할 수 있으며 Git은 저장소 기록에서 문자열을 추가하거나 삭제하는 커밋을 제공합니다. 이 기능을 사용하면 특정 코드 조각에 대한 커밋 컨텍스트를 쉽게 이해할 수 있습니다.

Git 커밋 기록에서 특정 문자열 검색

첫 번째 시나리오에서는 커밋 메시지에 업데이트라는 단어가 있는 모든 커밋을 검색하려고 합니다. 어떻게 해야 할까요?

아래와 같이 git log 명령을 실행합니다.

$ git log --grep=Update

출력:

문자열에 대한 Git 기록 검색 - 출력 1

위의 출력에서 볼 수 있듯이 Git은 Update라는 단어가 포함된 커밋만 제공했습니다.

"php" 문자열이 파일에서 추가되거나 제거된 커밋을 검색하고 싶다고 가정해 보겠습니다. 어떻게 해야 할까요?

아래와 같이 -S 플래그와 함께 git log 명령을 실행할 수 있습니다.

$ git log -S "php"

출력:

문자열에 대한 Git 기록 검색 - 출력 2

이를 비교하기 위해 아래 명령을 실행합니다.

$ git log -S "php" -p | grep "php" -C5

문자열에 대한 커밋이 많은 경우 difftool을 사용하는 것이 가장 좋습니다. Git이 두툼한 출력을 제공하기 때문에 혼란스러울 수 있습니다.

또한 git log 명령을 -G 인수와 함께 사용하여 아래와 같이 추가되거나 제거된 줄이 "php"와 일치하는 차이점을 검색할 수 있습니다.

$ git log -G "php"

메모:

  1. -G는 정규식을 허용하고 -S는 문자열을 허용합니다.
  2. -S 인수는 -G가 diff에서 단어를 검색하는 동안 단어가 변경된 커밋을 찾습니다.

git log 명령에 인수를 추가하여 출력을 조작할 수 있습니다. 일반적인 시나리오를 사용하여 커밋 기록에서 문자열을 검색하는 방법에 대해 논의했습니다.