git가 추적중인 파일 목록을 표시하도록하려면 어떻게해야합니까?


535

커맨드 라인 git을 사용하여 git이 저장소에서 추적중인 파일 목록을 표시하도록하려면 어떻게해야합니까?



2
나는 그것을 믿는다. 그러나 이것이 더 나은 대답을 할 때 이것을 dup으로 표시하는 것은 옳지 않습니다.
lindhe

5
평행 우주에서, 이 질문 에 모든 답이 포함되어 있지만 각각 고유 한 특징을 가지고있는 것이 얼마나 유사한 지 알 수 없습니다 .
Jeff Puckett

답변:


628

분기 master에서 현재 추적중인 모든 파일을 나열 하려면 다음 명령을 사용할 수 있습니다.

git ls-tree -r master --name-only

존재하는 파일 목록 (예 : 삭제 된 파일 포함)을 원하는 경우 :

git log --pretty=format: --name-only --diff-filter=A | sort - | sed '/^$/d'

61
현재 브랜치의 파일을 나열하려면 git ls-tree -r HEAD --name-only를 사용하십시오.
Ramast

3
디렉토리가 나열되지 않은 이유는 무엇입니까?
Shuzheng

13
@NicolasLykkeIversen- git디렉토리를 직접 버전 화하지 않습니다. 대신 파일과 경로를 저장합니다. ls-tree모든 버전 파일을 출력합니다. 이 차이점을 더 잘 이해하려면 빈 디렉토리를로 스테이징 해보십시오 git. 빈 디렉토리는 단계적 변경에 표시되지 않습니다. 이러한 빈 디렉토리를 버전 화하는 유일한 방법은 실제로 디렉토리 아래에 파일을 버전 화하는 것입니다. 버전 제어에서 이러한 빈 자리 표시 자 디렉토리가 필요한 사용 사례의 경우 디렉토리 아래에 더미 파일을 작성하고 버전을 지정할 수 있습니다. 설명이 명확하기를 바랍니다.
Tuxdude

2
그냥 참고, ls-tree master표시되지 않습니다 추적 준비 영역에 파일을.
nn0p

하위 디렉토리와 파일이 많은 경우 최상위 디렉토리 만 표시 할 수 있습니까?
Blaszard

191

git이 관리하는 파일은로 표시됩니다 git ls-files. 매뉴얼 페이지를 확인하십시오.


4
현재 디렉토리 또는 그 아래의 파일 만 표시하는 것 같습니다.
Lyle Z

11
매뉴얼 페이지의 관련 섹션을 포함하도록 이것을 편집해도 될까요?
Nathan Basanese

1
@NathanBasanese 아마도 해당 정보로 다른 답변을 추가 할 수 있습니다.
José Castro

@LyleZ 아마도 이것은 ls... 또는ls -R
flow2k

1
@LyleZ 또한이 동작은 다음과 동일 git ls-tree합니다 pwd.
flow2k

18

허용 된 답변은 현재 디렉토리의 트리에있는 파일 만 표시합니다. 표시하려면 모든 사용을 (현재 분기)에 커밋 된 추적 파일을

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에 허용되는 답변의 방법입니다 .


감사! 이것은 맨손으로도 작동합니다.
hzpc-joostk

5

이것으로 컬러 출력을 원할 수 있습니다.

현재 분기의 현재 디렉토리에 추적 된 파일 및 디렉토리를 나열하기 위해이 단일 라이너를 사용합니다.

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에서 테스트되었습니다 .
baltakatei
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.