source

모든 Git 기록에서 문자열 검색

ittop 2023. 4. 22. 10:27
반응형

모든 Git 기록에서 문자열 검색

오픈 소스로서 GitHub에 푸시하고 싶은 코드 베이스가 있습니다.이 Git 제어 소스 트리에는 패스워드를 포함한 특정 설정 파일이 있습니다.이 파일을 추적하지 않도록 주의해서.gitignore다만, 중요한 정보는 공개되지 않는다는 것을 확실히 하고 싶습니다.아마도 그 사이에 뭔가 실수가 있었을지도 모릅니다.내가 부주의해서 이런 일을 한 것은 아닌지 의심스럽지만, 나는 긍정적이고 싶다.

모든 Git을 "grep"할 수 있는 방법이 있나요?이상하게 들리겠지만 '모두'란 존재했던 모든 파일의 모든 버전을 의미합니다.모든 커밋에 대해 diff 파일을 덤프하는 명령어가 있다면 그게 효과가 있을까요?

Git은 -S 옵션으로 diff를 검색할 수 있습니다(문서에서는 곡괭이라고 부릅니다).

git log -S password

그러면 문자열을 추가 또는 삭제한 모든 커밋이 검색됩니다.password. 여기 몇 가지 옵션이 있습니다.

  • -p: 차이를 표시합니다.파일을 제공하는 경우(-p file패치를 생성합니다.
  • -G: 추가 또는 삭제된 행이 지정된 regexp와 일치하는 차이를 찾습니다.-S이 명령어는 "문자열 인스턴스를 도입 또는 삭제하는 차이점을 나타냅니다."
  • --all: 모든 브랜치 및 태그를 검색합니다.또는 를 사용합니다.--branches[=<pattern>]또는--tags[=<pattern>]
git rev-list --all | (
    while read revision; do
        git grep -F 'password' $revision
    done
)

다음 명령어를 사용하여 지금까지 추적된 모든 파일 내의 문자열을 검색합니다.

git log --patch  | less +/searching_string

또는

git rev-list --all | GIT_PAGER=cat xargs git grep 'search_string'

검색을 수행할 상위 디렉토리에서 실행해야 합니다.

언급URL : https://stackoverflow.com/questions/4468361/search-all-of-git-history-for-a-string

반응형