code

내 컴퓨터의 모든 git 저장소를 어떻게 볼 수 있습니까?

codestyles 2020. 8. 13. 23:23
반응형

내 컴퓨터의 모든 git 저장소를 어떻게 볼 수 있습니까?


내 컴퓨터에있는 모든 git 저장소를 볼 수있는 방법이 있습니까? 그것에 대한 명령이 있습니까?


당신이 리눅스에 있다면 find / -name ".git", 그렇지 않으면 방법이 없습니다. 그들은 표준 디렉토리입니다. OS 파일 / 폴더 찾기 프로그램을 사용하여 .git명명 된 폴더 를 찾으십시오 .


원래 답변 : 이것은 Windows Powershell에서 매우 잘 작동합니다.

Get-ChildItem . -Attributes Directory+Hidden -ErrorAction SilentlyContinue -Include ".git" -Recurse

편집 # 1 : -Filter는 -Include 보다 두 배 빠릅니다 . 그 해결책은 다음과 같습니다.

Get-ChildItem . -Attributes Directory+Hidden -ErrorAction SilentlyContinue -Filter ".git" -Recurse

편집 # 2 : Keith E. Truesdell 이 출력을 파일로 보내는 것을 언급했습니다. 해당 솔루션에 대한 그의 의견을 참조하십시오. 콘솔 출력을 선호합니다. 그러나 그의 의견은 내가 기본적으로 반환되는 전체 경로가 아닌 전체 경로를 선호한다고 생각하게했습니다. 전체 경로 만 원하면 다음을 사용하십시오.

Get-ChildItem . -Attributes Directory+Hidden -ErrorAction SilentlyContinue -Filter ".git" -Recurse | % { Write-Host $_.FullName }

최종 참고 : 위의 솔루션 은 현재 디렉토리 아래의 Git 저장소 만 반환합니다 . 드라이브의 모든 저장소를 원하면 각 드라이브의 루트에서 명령을 한 번 실행해야합니다.


* nix에서는 모든 --bare리포지토리 도 찾습니다 .

find / -name "*.git" -type d

Git 저장소는 모든이 HEAD, refs, objectsconfig항목.

GNU / anything에서

find -name HEAD -execdir test -e refs -a -e objects -a -e config \; -printf %h\\n

확인하는 것만으로도 .git많은 베어 리포지토리와 모든 하위 모듈이 누락됩니다.


Linux에서 더 빠른 방법은 다음과 같습니다.

locate -r "\.git$"

로 케이트의 데이터베이스를 계속 업데이트한다고 가정합니다. sudo updatedb


Linux에서는 루트 권한으로 다음 명령을 시도하십시오.

find / | grep \\.git$

이것은 .git로 끝나는 모든 파일을 검색합니다 .Windows, Linux 등의 검색 도구를 사용하여 수행 할 수 있습니다.


Linux 및 OS X에서 .git의 루트 디렉토리 find/다음 과 같을 때 다음 명령이 가장 빠를 수 있습니다 (가없는 저장소 무시 ) .

find / -name .git -exec dirname {} \; -prune

그러나 아래 대부분의 저장소가 뿌리를 들어, 다음은 아마도 가장 빠른 (교체 할 수 있습니다 /으로 .또는 다른 루트) :

find / -type d -exec test -d {}/.git \; -prune -print

사용 기본대한 빠른 설명 find( 여기 에는 연산자없기 때문에 -and암시 적입니다. 즉, 방문한 각 노드에 대해 기본 노드 중 하나가로 평가 될 때까지 왼쪽에서 오른쪽으로 평가됨 false) :

  • -nametrue이름 (와일드 카드로, 여기에 자주는 아니지만)과 일치하는 경우
  • -exec로 끝나는 명령을 실행하고 ;( \쉘의 해석을 피하기 위해 이스케이프 됨 ) true반환 상태가 0(즉, OK) 인 경우입니다. 현재 노드는 다음과 같이 사용할 수 있습니다 {}(이스케이프가 필요하지 않음).
  • -prune항상 true이며 모든 하위 노드를 건너 뜁니다.
  • -type dtrue디렉토리에 대해
  • -print-exec존재하는 경우 암시 적으로 추가되지 않기 때문에 여기에 필요합니다.

간단한 PowerShell 버전 :

Get-ChildItem . -Recurse -Hidden .git

Linux의 경우 :

dir="/home/${USER}"
dir_not="${dir}/miniconda3"
find /home/aeug -type d -iname ".git" -o -path "${dir_not}" -prune | xargs -0 echo 

참고 URL : https://stackoverflow.com/questions/2020812/how-can-i-view-all-the-git-repositories-on-my-machine

반응형