programing tip

git update-index --skip-worktree 실행 취소

itbloger 2020. 7. 10. 08:08
반응형

git update-index --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 -i ^S | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-skip-worktree
  1. git ls-files -v 모든 파일을 상태로 인쇄합니다
  2. grep -i ^S 파일을 필터링하고 작업 트리 건너 뛰기 (S) 또는 작업 트리 건너 뛰기 만 선택하고 변경되지 않은 것으로 가정합니다. -i는 대소 문자 구분을 무시합니다.
  3. cut -c 3- 상태를 제거하고 경로 만 남겨두고 3 번째 문자에서 끝까지 자릅니다.
  4. tr '\012' '\000' 줄 끝 문자 (\ 012)를 0 문자 (\ 000)로 바꿉니다.
  5. xargs -0 git update-index --no-skip-worktreegit 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)

거북이 힘내를 사용하는 사람들을 위해 :

  1. 폴더 나 특정 파일을 마우스 오른쪽 버튼으로 클릭 한 다음 TortoiseGit > Check for modifications
  2. 만 확인하십시오 Show ignore local changes flagged files. 무시한 파일 (또는 폴더를 마우스 오른쪽 버튼으로 클릭 한 경우 무시한 모든 파일)이 표시됩니다.
  3. 파일을 마우스 오른쪽 버튼으로 클릭하고 Unflag as skip-worktree and assume-unchanged

참고 URL : https://stackoverflow.com/questions/11131197/undo-git-update-index-skip-worktree

반응형