답변:
분기 master
에서 현재 추적중인 모든 파일을 나열 하려면 다음 명령을 사용할 수 있습니다.
git ls-tree -r master --name-only
존재하는 파일 목록 (예 : 삭제 된 파일 포함)을 원하는 경우 :
git log --pretty=format: --name-only --diff-filter=A | sort - | sed '/^$/d'
git
디렉토리를 직접 버전 화하지 않습니다. 대신 파일과 경로를 저장합니다. ls-tree
모든 버전 파일을 출력합니다. 이 차이점을 더 잘 이해하려면 빈 디렉토리를로 스테이징 해보십시오 git
. 빈 디렉토리는 단계적 변경에 표시되지 않습니다. 이러한 빈 디렉토리를 버전 화하는 유일한 방법은 실제로 디렉토리 아래에 파일을 버전 화하는 것입니다. 버전 제어에서 이러한 빈 자리 표시 자 디렉토리가 필요한 사용 사례의 경우 디렉토리 아래에 더미 파일을 작성하고 버전을 지정할 수 있습니다. 설명이 명확하기를 바랍니다.
ls-tree master
표시되지 않습니다 추적 준비 영역에 파일을.
git이 관리하는 파일은로 표시됩니다 git ls-files
. 매뉴얼 페이지를 확인하십시오.
ls
... 또는ls -R
git ls-tree
합니다 pwd
.
허용 된 답변은 현재 디렉토리의 트리에있는 파일 만 표시합니다. 표시하려면 모든 사용을 (현재 분기)에 커밋 된 추적 파일을
git ls-tree --full-tree --name-only -r HEAD
--full-tree
repo의 루트 디렉토리에있는 것처럼 명령을 실행합니다.-r
하위 디렉토리로 재귀합니다. 와 결합 --full-tree
하면 커밋 된 모든 추적 파일이 제공됩니다.--name-only
파일 경로 만 원할 때 SHA / 권한 정보를 제거합니다.HEAD
추적되고 커밋 된 파일 목록을 원하는 분기를 지정합니다. 이것을 master
또는 다른 지점 이름으로 변경할 수 있지만 지금 HEAD
은 커밋 한 커밋입니다.이것은 ~ duplicate question https://stackoverflow.com/a/8533413/4880003에 허용되는 답변의 방법입니다 .
이것으로 컬러 출력을 원할 수 있습니다.
현재 분기의 현재 디렉토리에 추적 된 파일 및 디렉토리를 나열하기 위해이 단일 라이너를 사용합니다.
ls --group-directories-first --color=auto -d $(git ls-tree $(git branch | grep \* | cut -d " " -f2) --name-only)
별명으로 추가 할 수 있습니다.
alias gl='ls --group-directories-first --color=auto -d $(git ls-tree $(git branch | grep \* | cut -d " " -f2) --name-only)'
파일을 재귀 적으로 나열하려면 다음을 수행하십시오.
'ls' --color=auto -d $(git ls-tree -rt $(git branch | grep \* | cut -d " " -f2) --name-only)
그리고 별명 :
alias glr="'ls' --color=auto -d \$(git ls-tree -rt \$(git branch | grep \\* | cut -d \" \" -f2) --name-only)"
glr
제공 한 별칭이 약간 이상하게 보이므로 제공 한 첫 번째 별칭의 형식과 버전이 더 일치하도록 만들었습니다 alias glr='ls --color=auto -d $(git ls-tree -rt $(git branch | grep \* | cut -d " " -f2) --name-only)'
. git version 2.20.1
데비안 10에서 테스트되었습니다 .