programing

모든 Git 기록에서 문자열을 검색 하시겠습니까?

nasanasas 2020. 9. 30. 10:58
반응형

모든 Git 기록에서 문자열을 검색 하시겠습니까? [복제]


이 질문에 이미 답변이 있습니다.

오픈 소스로 GitHub에 푸시하려는 코드 기반이 있습니다. 이 자식 제어 소스 트리에는 비밀번호가 포함 된 특정 구성 파일이 있습니다. 이 파일을 추적하지 않도록 확인했고 .gitignore파일 에도 추가했습니다 . 그러나 나는 어떤 것이 커밋 사이에 끼어 들었을 때와 같은 민감한 정보가 밀려 나지 않을 것이라는 점을 절대적으로 긍정적으로 생각하고 싶습니다. 이 일을 할만큼 부주의 한 것 같지는 않지만 긍정적 이되고 싶습니다 .

모든 자식을 "grep"하는 방법이 있습니까? 이상하게 들리지만 "모두"란 존재했던 모든 파일의 모든 버전을 의미합니다. 모든 커밋에 대해 diff 파일을 덤프하는 명령이 있다면 작동할까요?


Git은 -S 옵션으로 diff를 검색 할 수 있습니다 ( 문서 에서는 pickaxe라고 함 ).

git log -Spassword

이것은 문자열을 추가하거나 제거한 커밋을 찾습니다 password. 다음은 몇 가지 옵션입니다.

  • -p: 차이를 표시합니다. 파일 ( -p file) 을 제공하면 패치가 생성됩니다.
  • -G: -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

반응형