얼마 전에 나는 git에 의해 추적 된 파일의 변경 사항을 무시하기 위해 이것을했다.
git update-index --skip-worktree <file>
이제 실제로 해당 파일의 변경 사항을 소스로 커밋하려고합니다. 효과를 취소하려면 어떻게합니까 skip-worktree
?
얼마 전에 나는 git에 의해 추적 된 파일의 변경 사항을 무시하기 위해 이것을했다.
git update-index --skip-worktree <file>
이제 실제로 해당 파일의 변경 사항을 소스로 커밋하려고합니다. 효과를 취소하려면 어떻게합니까 skip-worktree
?
답변:
아하! 나는 단순히 원한다 :
git update-index --no-skip-worktree <file>
에 따르면 http://www.kernel.org/pub/software/scm/git/docs/git-update-index.html 사용
git ls-files -v
특수 문자로 표시된 "변경되지 않은 것으로 가정"및 "건너 뛰기 작업 트리"파일을 보려면 "skip-worktree"파일은로 표시됩니다 S
.
편집 : @amacleod가 언급했듯이 모든 숨겨진 파일을 나열하기 위해 별칭을 만드는 것은 좋은 트릭이므로 기억할 필요가 없습니다. alias hidden="git ls-files -v | grep '^S'"
.bash_profile에서 사용 합니다. 잘 작동합니다!
git ls-files -v | grep '^S'
skip-worktree로 "숨겨진"파일 만 나열 하는 데 사용할 수 있습니다 . 해당 명령에 대해 "숨겨진"별칭을 만들려고했지만 별칭에 파이프 리디렉션을 넣는 것은 효과가없는 것 같습니다.
!
. 이 [alias] ignored = !git ls-files -v | grep "^S"
테스트 와 같이 작동합니다.
grep
모르겠습니다. 껍질에 따라 다릅니다. Git Bash와 함께 제공됩니다 grep
.
'
작동하지는 "
않았지만, 즉git ls-files -v | grep "^S"
적용된 모든 파일을 실행 취소하려면 작업 트리 건너 뛰기를 수행하십시오. 다음 명령을 사용할 수 있습니다.
git ls-files -v | grep -i ^S | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-skip-worktree
git ls-files -v
모든 파일을 상태로 인쇄합니다grep -i ^S
파일을 필터링하고 작업 트리 건너 뛰기 (S) 또는 작업 트리 건너 뛰기 만 선택하고 변경되지 않은 것으로 가정합니다. -i는 대소 문자 구분을 무시합니다.cut -c 3-
상태를 제거하고 경로 만 남겨두고 3 번째 문자에서 끝까지 자릅니다.tr '\012' '\000'
줄 끝 문자 (\ 012)를 0 문자 (\ 000)로 바꿉니다.xargs -0 git update-index --no-skip-worktree
git update-index --no-skip-worktree
실행 취소 하기 위해 0으로 구분 된 모든 경로를 전달합니다.@ GuidC0DE 답변을 바탕으로 Powershell 버전이 있습니다 ( posh-git 사용 )
git update-index --no-skip-worktree $(git ls-files -v | sls -pattern "^S"| %{$_.Line.Substring(2)})
그리고 파일을 숨기는 반대 명령도 참조하십시오.
git update-index --skip-worktree $(git ls-files --modified)
Bash 별칭을 좋아하는 모든 사람들을 위해 다음은 모두를 지배하는 세트입니다 (C0DEF52 기반)
alias gitskip='git update-index --skip-worktree ' #path to file(s)
alias gitlistskiped='git ls-files -v | grep ^S'
alias gitunskip='git update-index --no-skip-worktree ' #path to file(s)
alias gitunskipall='git ls-files -v | grep -i ^S | cut -c 3- | tr ''\\012'' ''\\000'' | xargs -0 git update-index --no-skip-worktree'
이 답변은 Windows를 사용하는 기술이 적은 사람들을 대상으로합니다.
"skip-worktree"를 클릭 한 파일을 기억하지 못하거나 모르는 경우 다음을 사용하십시오.
git ls-files -v //This will list all files, you are looking for the ones with an S at the beginning of the line.
git ls-files -v | grep "S " //Use this to show only the lines of interest. Those are the files that have "skip-worktree".
문제를 해결하려면
당신은 파일로 이동-> 마우스 오른쪽 버튼으로 클릭-> 이전 버전으로 복원-> 상단에 "git"탭을 클릭-> "skip-worktree"체크 박스의 선택을 해제-> 하단에있는 "적용"을 클릭
파일이 너무 많아서 직접 고치기에는 다른 답변을 참조해야합니다.