Git은 특정 디렉토리 / 파일을 보거나 추적하는 것을 무시합니다. 당신은 이것을 실행합니다 :
git update-index --assume-unchanged <file>
이제 어떻게 다시 실행 취소 할 수있게 되나요? (가정이라고 가정합시다.)
Git은 특정 디렉토리 / 파일을 보거나 추적하는 것을 무시합니다. 당신은 이것을 실행합니다 :
git update-index --assume-unchanged <file>
이제 어떻게 다시 실행 취소 할 수있게 되나요? (가정이라고 가정합시다.)
답변:
변경되지 않은 것으로 설정된 undo / show 디렉토리 / 파일을 얻으려면 다음을 실행하십시오 .
git update-index --no-assume-unchanged <file>
이것을 assume-unchanged
실행 하는 디렉토리 / 파일 목록을 얻으려면 :
git ls-files -v|grep '^h'
git ls-files -v|grep '^h'|cut -c3-
"h"접두사없이 파일 이름 만 제공합니다.
assume-unchanged
사용하십시오 git update-index --really-refresh
. 이 명령을 사용하면 git ls-files
먼저 파일을 찾을 필요가 없습니다 .
이것이 자주 사용하는 명령 인 경우 별명을 갖는 것도 고려할 수 있습니다. 전 세계에 추가 .gitconfig
:
[alias]
hide = update-index --assume-unchanged
unhide = update-index --no-assume-unchanged
별칭을 설정하는 방법 (아직 모르는 경우) :
git config --configLocation alias.aliasName 'command --options'
예:
git config --global alias.hide 'update-index --assume-unchanged'
git config... etc
이 파일을에 저장 한 후 .gitconfig
청소기 명령을 실행할 수 있습니다.
git hide myfile.ext
또는
git unhide myfile.ext
이 자식 문서 는 매우 도움이되었습니다.
주석에 따르면 현재 숨겨진 파일 을 찾는 데 도움이되는 별칭입니다 .
[alias]
hidden = ! git ls-files -v | grep '^h' | cut -c3-
hidden = ! git ls-files -v | grep '^h' | cut -c3-
git update-index 기능에는 다음과 같이 입력 할 수있는 몇 가지 옵션이 있습니다.
git update-index --help
여기서는 update-index 함수로 처리하는 방법에 대한 다양한 옵션을 찾을 수 있습니다.
[파일 이름을 모르는 경우]
git update-index --really-refresh
[파일 이름을 알고있는 경우]
git update-index --no-assume-unchanged <file>
무시 목록에 추가 된 모든 파일을 되돌립니다.
git update-index --assume-unchanged <file>
git update-index --no-assume-unchanged <file>
내 생명을 구했어
@adardesign, @adswebwork 및 @AnkitVishwakarma의 탁월한 원본 답변과 @Bdoserror, @Retsam, @seanf 및 @torek의 주석을 추가 문서 링크 및 간결한 별칭으로 합성하려면 ...
기본 명령
변경되지 않은 것으로 가정 된 파일 을 다시 정상으로 재설정 하려면 :
git update-index --no-assume-unchanged <file>
변경되지 않은 모든 파일 을 나열 하려면 다음 을 수행 하십시오 .
git ls-files -v | grep '^[a-z]' | cut -c3-
변경되지 않은 모든 가정 파일을 다시 정상으로 재설정 하려면 :
git ls-files -v | grep '^[a-z]' | cut -c3- | xargs git update-index --no-assume-unchanged --
참고 : 다른 곳에서 나열된이 명령은 변경되지 않은 모든 가정 파일을 더 이상 재설정하지 않는 것으로 보입니다 (이전에는 솔루션으로 사용했으며 이전에 솔루션으로 나열했습니다).
git update-index --really-refresh
바로 가기
git에서 이러한 일반적인 작업을 쉽게 수행하려면 사용자 를 위해 다음 별칭 섹션을 추가 / 업데이트하십시오 .gitconfig
(예 : ~/.gitconfig
* nix 또는 macOS 시스템).
[alias]
hide = update-index --assume-unchanged
unhide = update-index --no-assume-unchanged
unhide-all = ! git ls-files -v | grep '^[a-z]' | cut -c3- | xargs git update-index --no-assume-unchanged --
hidden = ! git ls-files -v | grep '^[a-z]' | cut -c3-
git hidden
사용하여 쉘 별명이나 스크립트없이 동일한 효과를 얻을 수 있습니다 !
.hidden = ! git ls-files -v | grep '^h' | cut -c3-
--really-refresh
인덱스 파일에서 변경되지 않은 플래그를 지우지 않습니다.
적용된 모든 파일을 실행 취소하려는 경우 캐시 된 상태뿐만 아니라 소문자로 문자로 표시하는 상태뿐만 아니라 상태가 변경되지 않은 것으로 가정하면 다음 명령을 사용할 수 있습니다.
git ls-files -v | grep '^[a-z]' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-assume-unchanged
git ls-files -v
모든 파일을 상태로 인쇄합니다grep '^[a-z]'
파일을 필터링하고 변경되지 않은 것으로 가정합니다.cut -c 3-
상태를 제거하고 경로 만 남겨두고 3 번째 문자에서 끝까지 자릅니다.tr '\012' '\000'
줄 끝 문자 (\ 012)를 0 문자 (\ 000)로 바꿉니다.xargs -0 git update-index --no-assume-unchanged
git update-index --no-assume-unchanged
실행 취소 하기 위해 0으로 구분 된 모든 경로를 전달합니다.에 추가 @adardesign
하면 추가 된 모든 파일을 재설정하려는 경우, 응답의 assume-unchanged
목록으로 no-assume-unchanged
한 번에 다음을 수행 할 수 있습니다 :
git ls-files -v | grep '^h' | sed 's/^..//' | sed 's/\ /\\ /g' | xargs -I FILE git update-index --no-assume-unchanged FILE || true
이것은 grep ie에서 출력 된 두 문자를 "h "
제거한 다음 파일 이름에있을 수있는 공백을 피하고 || true
루프의 일부 파일에 오류가있는 경우 명령이 조기에 종료되지 않도록합니다.
여기서 다루지 않은 것은 없습니다. 그러나 내 2 센트를 추가하고 싶습니다. 때로는 빌드를 실행하고 많은 파일을 변경 한 다음 무언가 작업을 원 하므로이 명령이 실제로 많은 도움이됩니다.
git update-index --assume-unchanged `git status | grep modified | sed 's|modified:||g'| xargs`
다른 사람도 유용하게 사용하기를 바랍니다.
.gitignore
빌드 아티팩트를 무시 하는 데 사용 하면 이점이 있다고 생각합니다 .
.gitignore
있지만 때때로 그것은 내 경험으로는 충분하지 않습니다. 그러나 나는 당신이 이것을 말하는 맥락을 이해합니다.
Windows에서 나에게 도움이되는 해결책은 없습니다 . 파일 상태 H
보다는 자본을 사용하는 것으로 보이며 h
grep 명령에는 ^
줄의 시작과 다음 문자 무시를 나타내는 추가 캐럿이 필요합니다 .
Windows 솔루션
git ls-files -v | grep '^^H'
캐시되지 않은 모든 파일을 나열git ls-files -v | grep '^^H' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-skip-worktree
를 통해 수행 된 모든 파일을 건너 뛰는 파일을 실행 취소하는 방법 update-index --skip-worktree
git ls-files -v | grep '^^H]' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-assume-unchanged
를 통해 수행 된 모든 파일을 건너 뛰는 파일을 실행 취소하는 방법 update-index --assume-unchanged
git ls-files -v | grep '^^H'
캐시되지 않은 모든 파일을 다시 나열하고 위의 명령이 작동했는지 확인하려면 아무것도 반환하지 않아야합니다.