Git Git commit diffs 또는 contents for a specific word?
Git 코드 저장소에서 특정 단어가 포함 된 모든 커밋을 나열하고 싶습니다. 나는 이것을 시도했다
git log -p | grep --context=4 "word"
하지만 파일 이름을 반드시 돌려주는 것은 아닙니다 (검색 한 단어에서 5 줄 미만이 아닌 경우에는 말입니다.
git grep "word"
그러나 그것은 나에게 역사가 아닌 현재 파일만을 제공합니다.
특정 단어에 대한 변경 사항을 추적 할 수 있도록 전체 기록을 검색하려면 어떻게합니까? 내 코드베이스에서 변경 내용을 추적하기 위해 단어 발생을 검색한다는 의미입니다 (파일 기록에서 검색).
커밋 메시지 에 주어진 단어 가 포함 된 모든 커밋을 찾으려면 다음을 사용하십시오.
$ git log --grep=word
파일 내용 에서 "단어"가 추가되거나 제거 된 모든 커밋을 찾으려면 (정확히 말하면 "단어"발생 횟수가 변경된 위치), 즉 커밋 내용을 검색합니다. 소위 'pickaxe'검색을
$ git log -Sword
현대 git에는 또한
$ git log -Gword
추가되거나 제거 된 줄이 "단어"와 일치하는 차이점 을 찾습니다 ( 내용 을 커밋 ).
참고 -G
기본적으로하면서, 정규식을 받아 -S
문자열을 허용하지만,를 사용하여 정규 표현식에 동의 수정할 수 있습니다 --pickaxe-regex
.
의 차이를 설명하기 위해
-S<regex> --pickaxe-regex
하고-G<regex>
, A는 같은 파일에 다음 DIFF와 커밋 고려 :+ return !regexec(regexp, two->ptr, 1, ®match, 0); ... - hit = !regexec(regexp, mf2.ptr, 1, ®match, 0);
while
git log -G"regexec\(regexp"
will show this commit,git log -S"regexec\(regexp" --pickaxe-regex
will not (왜냐하면 해당 문자열의 발생 횟수가 변경되지 않았기 때문).
git log
의 곡괭이는 "단어"를 포함하여 변경된 커밋을 찾습니다. git log -Sword
많은 실험 끝에 주어진 정규 표현식을 포함하는 줄을 도입하거나 제거하는 커밋을 보여주고, 단어가 추가 및 제거 된 색상으로 각각의 텍스트 변경 사항을 표시하는 다음을 권장 할 수 있습니다.
git log --pickaxe-regex -p --color-words -S "<regexp to search for>"
그래도 실행하는 데 시간이 걸립니다 ... ;-)
다음 명령을 시도 할 수 있습니다.
git log --patch --color=always | less +/searching_string
또는 grep
다음과 같은 방법으로 사용 :
git rev-list --all | GIT_PAGER=cat xargs git grep 'search_string'
검색하려는 상위 디렉토리에서이 명령을 실행하십시오.
한 가지 더 방법 / 구문은 다음 git log -S "word"
과 같습니다 . 이와 같이 예를 들어 검색 할 수 있습니다.git log -S "with whitespaces and stuff @/#ü !"
vim-fugitive 는 Vim 에서 그런 종류의 검사를 위해 다재다능합니다.
:Ggrep
그렇게하는 데 사용 합니다. 자세한 내용은 vim-fugitive를 설치하고 :help Grep
. 그리고이 에피소드 : git-repository의 역사 탐색 은 모든 작업을 수행하도록 안내합니다.
정규식에서 부울 커넥터를 사용하려면 다음을 수행하십시오.
git log --grep '[0-9]*\|[a-z]*'
이 정규식은 커밋 메시지에서 정규식 [0-9] * 또는 [az] *를 검색합니다.
git 기록에서 제거하기 위해 민감한 데이터를 검색하려는 경우 (여기에 방문한 이유)이를위한 도구가 있습니다. Github는 해당 문제에 대한 전용 도움말 페이지입니다 .
이 기사의 요점은 다음과 같습니다.
BFG 리포-클리너는 원치 않는 데이터를 제거하는 자식 필터 지점에 빠르고 간단한 대안입니다. 예를 들어 민감한 데이터가있는 파일을 제거하고 최신 커밋을 변경하지 않으려면 다음을 실행합니다.
bfg --delete-files YOUR-FILE-WITH-SENSITIVE-DATA
저장소 기록에서 찾을 수있는 모든 곳에서 passwords.txt에 나열된 모든 텍스트를 바꾸려면 다음을 실행합니다.
bfg --replace-text passwords.txt
전체 사용 및 다운로드 지침 은 BFG Repo-Cleaner의 설명서 를 참조하십시오 .
'development' 카테고리의 다른 글
ASP.NET Web API : 401 / 무단 응답을 반환하는 올바른 방법 (0) | 2020.10.04 |
---|---|
객체를 반환하는 ECMAScript 6 화살표 함수 (0) | 2020.10.03 |
해시 맵의 키가 주어지면 값을 업데이트하는 방법은 무엇입니까? (0) | 2020.10.03 |
3 개의 부울 중 2 개 이상이 참인지 확인 (0) | 2020.10.03 |
Mipmaps vs. 드로어 블 폴더 (0) | 2020.10.03 |