변경되지 않은 것으로 가정 된 파일 목록을 얻을 수 있습니까?


325

내가 무엇으로 표시 --assume-unchanged했습니까? 그 옵션을 사용하여 찾아낸 것을 찾을 수있는 방법이 있습니까?

나는 .git/디렉토리를 파헤 쳐서 기대했던 것 같은 것을 보지 못했지만 어딘가에 있어야합니다. 몇 주 전에이 방법으로 표시 한 내용을 잊어 버렸으며 이제는 향후 개발자를 위해 세부 정보를 문서화해야합니다.

답변:


449

사용할 수 있습니다 git ls-files -v. 인쇄 된 문자가 소문자 인 경우 파일은 변경되지 않은 것으로 표시됩니다.

변경되지 않은 파일 만 인쇄하려면 다음을 사용하십시오.

git ls-files -v | grep '^[[:lower:]]'

게으른 프로그래머를 받아들이려면 이것을 git alias 로 바꾸십시오 . .gitconfig이 스 니펫을 추가하려면 파일을 편집하십시오 .

[alias]
    ignored = !git ls-files -v | grep "^[[:lower:]]"

이제 입력 git ignored하면 다음과 같이 출력 됩니다 .

h path/to/ignored.file
h another/ignored.file

42
자식 ls 파일 -v | grep ^ [az]
Matt R

17
내 OS에는 분명히 이상한 데이터 정렬 설정이 있으므로 Matt의 명령이 작동하지 않았습니다. 저는 여기 아래에 추가 무엇 [alias]의 섹션 내 .gitconfig:ignored = !git ls-files -v | grep "^[[:lower:]]"
아베 Voelker

15
[az]가 작동하지 않는 이유는 쉘이 그것을 와일드 카드로 확장하기 때문입니다. 현재 디렉토리에 해당 패턴과 일치하는 파일 (예 : 단일 소문자)이 포함 된 경우 해당 파일의 확장은 파일 이름입니다. "[az]"와 같은 따옴표를 추가해보십시오
DomQ

7
자식 ls 파일 -v | grep -e "^ [az]"
Amir Ali Akbari

12
제안 된 별명은 현재 디렉토리와 그 아래에서 변경되지 않은 파일을 찾는 데 사용됩니다. 저장소에 "가정되지 않은"모든 파일의 목록을 원하는 경우 다음이 필요합니다.git ls-files -v `git rev-parse --show-toplevel` | grep "^[a-z]"
Trebor Rude

65

짧막 한 농담

git ls-files -v | grep "^[a-z]"

별명 사용

IMHO git hidden--assume-unchanged다음 과 같이 표시된 파일에 더 좋습니다 .

git config --global alias.hidden '!git ls-files -v | grep "^[a-z]"'

내가 가진 관련 별칭 목록은 다음과 같습니다 ~/.gitconfig.

[alias]
  hide = update-index --assume-unchanged
  unhide = update-index --no-assume-unchanged
  unhide-all = update-index --really-refresh
  hidden = !git ls-files -v | grep \"^[a-z]\"
  ignored = !git status -s --ignored | grep \"^!!\"

하위 디렉토리 에서 작동 하고 인수를 지원 하려면 다음을 수행하십시오 .

  hidden = "!f(){ git -C \"$GIT_PREFIX\" ls-files -v \"$@\" | grep \"^[a-z]\";}; f"
  ignored = "!f(){ git -C \"$GIT_PREFIX\" status -s --ignored \"$@\" | grep \"^!!\";}; f"

예를 들면 다음과 같습니다.

 # cd target
 # git ignored classes

파일 상태

나를 위해 대부분의 숨겨진 파일은 flag로 표시 h되지만 실제로는 매뉴얼에 따라 몇 가지 다른 플래그가 있습니다 git-ls-files-v.

-v
    Similar to -t, but use lowercase letters for files that are 
marked as assume unchanged (see git-update-index(1)).

소개 git ls-files-t:

This option (-t) identifies the file status with the following tags 
(followed by a space) at the start of each line:

H   cached
S   skip-worktree
M   unmerged
R   removed/deleted
C   modified/changed
K   to be killed
?   other

1
기억하기 쉬운 좋은 별칭 :) 감사합니다
PlagueHammer

1
보다 유연한 변형은 다음 hidden = "!f() { git ls-files -v \"$@\" | grep \"^[a-z]\"; }; f"과 같습니다 ignored = "!f() { git status -s --ignored \"$@\" | grep \"^!!\"; }; f". 예를 들어, git ignored -- PATH1 PATH2특정 경로에 무시 된 파일 만 나열 할 수 있습니다 (무시 된 파일이 많은 경우에 유용).
sls

별명을 주셔서 감사합니다
MOHRE

22

이 명령은 더 일관되게 작동합니다. '가정되지 않은 것으로 가정'된 파일 만 인쇄합니다.

git ls-files -v|grep "^h"

나는 다른 환경에서 이것을 많이 사용했으며 완벽하게 작동합니다.


5
Windows 프롬프트에서 grep "^h"작은 따옴표 대신 사용하십시오
beautifulcoder

7

Select-String \ sls를 사용하는 PowerShell 솔루션

git ls-files -v | sls -pattern ^h -casesensitive

3

findstr 을 사용하는 Windows 명령 행 솔루션 :

git ls-files -v | findstr /B h
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.