Programing

git을 사용하여 모든 분기에서 문자열을 어떻게 검색 할 수 있습니까?

lottogame 2020. 6. 19. 19:24
반응형

git을 사용하여 모든 분기에서 문자열을 어떻게 검색 할 수 있습니까?


git을 사용하여 모든 로컬 분기의 모든 파일 내에서 주어진 문자열을 어떻게 검색 할 수 있습니까?

Github 특정 : 모든 github 브랜치에서 위의 검색을 수행 할 수 있습니까? (원격 github 저장소에 여러 가지 원격 분기가있어 이상적 으로이 검색을 중단 할 필요가 없습니다 ..)


Git 리포지토리에서이 작업을 수행 할 수 있습니다.

git grep "string/regexp" $(git rev-list --all)

Github 고급 검색에는 코드 검색 기능이 있습니다.

코드 검색은 GitHub에 공개적으로 호스팅 된 모든 코드를 살펴 봅니다. 다음을 기준으로 필터링 할 수도 있습니다.

  • 언어: language:
  • 저장소 이름 (사용자 이름 포함) : repo:
  • 파일 경로 : path:

@manojlds git grep 명령을 사용하고 오류가 발생하는 경우 :

-bash: /usr/bin/git: Argument list too long" 

그런 다음 xargs를 사용해야합니다.

git rev-list --all | xargs git grep "string/regexp"

또한 git history에서 커밋 된 코드를 grep (검색)하는 방법을 참조하십시오 .


대부분의 경우 git rev-list --all스캔하는 데 시간이 오래 걸리는 수많은 커밋을 반환 할 수 있습니다. 저장소 히스토리의 모든 브랜치에서 모든 커밋을 검색하는 대신 모든 브랜치 팁을 검색하려는 경우로 대체 할 수 있습니다 git show-ref --heads. 따라서 총계 :

git grep "string" `git show-ref --heads`

또는:

git show-ref --heads | xargs git grep "string"

팁 : 파일로 출력을 작성하여 편집기에서 볼 수 있습니다.

nano ~/history.txt
git show-ref --heads | xargs git grep "search string here" >> ~/history.txt

여기에 나열된 솔루션에는 거의 문제가 없습니다 (심지어 받아 들여짐).

  1. 중복을 얻을 때 모든 해시를 나열 할 필요는 없으며 시간이 더 걸립니다.

당신이 문자열을 검색 할 수 있습니다 곳이 기반으로 "test -f /"여러 가지에 masterdev등을

git grep "test -f /" master dev

어느

printf "master\ndev" | xargs git grep "test -f /"

여기로갑니다.

이것은 모든 로컬 브랜치의 팁에 대한 해시를 찾고 해당 커밋에서만 검색합니다.

git branch -v --no-abbrev | awk -F' *' '{print $3}' | xargs git grep "string/regexp"

원격 지점에서도 검색 해야하는 경우 다음을 추가하십시오 -a.

git branch -a -v --no-abbrev | awk -F' *' '{print $3}' | xargs git grep "string/regexp"

최신 정보:

# search in local branches
git branch | cut -c3- | xargs git grep "string"
# search in remote branches
git branch -r | cut -c3- | xargs git grep "string"
# search in all (local and remote) branches
git branch -a | cut -c3- | cut -d' ' -f 1 | xargs git grep "string"

# search in branches, and tags
git show-ref | grep -v "refs/stash" | cut -d' ' -f2 | xargs git grep "string"

당신은 이것을 시도 할 수 있습니다

git log -Sxxxx  #search all commits
git log -Sxxxx  --branches[=<pattern>]   #search branches

참고 URL : https://stackoverflow.com/questions/7151311/using-git-how-could-i-search-for-a-string-across-all-branches

반응형