Git은 특정 디렉토리 / 파일을 보거나 추적하는 것을 무시합니다. 당신은 이것을 실행합니다 :
git update-index --assume-unchanged <file>
이제 어떻게 다시 실행 취소 할 수있게 되나요? (가정이라고 가정합시다.)
답변
변경되지 않은 것으로 설정된 undo / show 디렉토리 / 파일을 얻으려면 다음을 실행하십시오 .
git update-index --no-assume-unchanged <file>
이것을 assume-unchanged
실행 하는 디렉토리 / 파일 목록을 얻으려면 :
git ls-files -v|grep '^h'
답변
이것이 자주 사용하는 명령 인 경우 별명을 갖는 것도 고려할 수 있습니다. 전 세계에 추가 .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-
답변
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>
답변
나는 옵션 --assume-unchanged
이 보이지 않기 때문에 당신이 의미한다고 가정 합니다 --assume-changed
. 의 반대는 --assume-unchanged
입니다 --no-assume-unchanged
.
답변
@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 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
루프의 일부 파일에 오류가있는 경우 명령이 조기에 종료되지 않도록합니다.