업데이트 색인 실행 취소 --작업 트리 건너뛰기
얼마 전 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
특수 문자로 표시된 "변경되지 않음" 및 "변경되지 않음" 작업 트리 파일을 확인합니다."작업 건너뛰기 트리" 파일은 다음과 같이 표시됩니다.S
.
편집: @amcleod가 언급했듯이 모든 숨겨진 파일을 나열하는 별칭을 만드는 것은 기억할 필요가 없도록 하는 좋은 방법입니다.사용합니다alias hidden="git ls-files -v | grep '^S'"
내 .vmdk_profile에서.잘 작동합니다!
작업 트리 건너뛰기가 적용된 모든 파일을 실행 취소하려면 다음 명령을 사용할 수 있습니다.
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-
상태를 제거하고 경로만 남겨 세 번째 문자에서 끝까지 자릅니다.tr '\012' '\000'
줄의 끝 문자(\012)를 0 문자(\000)로 바꿉니다.xargs -0 git update-index --no-skip-worktree
0 문자로 구분된 모든 경로를 에 전달합니다.git update-index --no-skip-worktree
되돌리기 위해
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'
@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)
Tortoor Git을 사용하는 사용자:
- 폴더 또는 특정 파일을 마우스 오른쪽 단추로 클릭한 다음
TortoiseGit > Check for modifications
- 확인만
Show ignore local changes flagged files
무시한 파일(또는 폴더를 마우스 오른쪽 단추로 클릭한 경우 무시한 모든 파일)이 표시됩니다. - 파일을 마우스 오른쪽 단추로 클릭하고 선택합니다.
Unflag as skip-worktree and assume-unchanged
이 답변은 Windows(윈도우)를 사용하는 기술 수준이 낮은 사용자를 대상으로 합니다.
어떤 파일에서 "작업 트리 건너뛰기"를 클릭했는지 기억하지 못하거나 모르는 경우 다음을 사용합니다.
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" 확인란의 선택을 취소합니다. -> 하단의 "Apply"(적용).
파일이 너무 많아 손으로 수정할 수 없는 경우 다른 답변을 참조해야 합니다.
PowerShell 사용자의 경우 @yossico의 bash 별칭에서 영감을 얻은 몇 가지 함수(에일리어스)가 있습니다.
<#
Command: gitskipped
Description: List skipped files in git
Usage: gitskipped
#>
function gitskipped {
(git ls-files -v $args) -split "\r\n" | Select-String -Pattern '^S ' | ForEach-Object {
Write-Output $_.Line.Substring(2)
}
}
<#
Command: gitskip
Description: Mark file(s) as "skip-worktree" in git
Usage: gitskip .env
#>
function gitskip {
git update-index --skip-worktree $args
}
<#
Command: gitunskip
Description: Unmark file(s) as "skip-worktree" in git
Usage: gitunskip .env
#>
function gitunskip {
git update-index --no-skip-worktree $args
}
<#
Command: gitunskipall
Description: Unmark all skipped files in git
Usage: gitunskipall
#>
function gitunskipall {
$files = @((git ls-files -v $args) -split "\r\n" | Select-String -Pattern '^S ' | ForEach-Object { $_.Line.Substring(2) })
git update-index --no-skip-worktree $files
}
언급URL : https://stackoverflow.com/questions/11131197/undo-git-update-index-skip-worktree
'programing' 카테고리의 다른 글
@동적 속성이 있는 TestPropertySource (0) | 2023.06.29 |
---|---|
AES 암호화 데이터를 통한 Mysql/MariaDB 검색 (0) | 2023.06.29 |
내 블록 크기 오라클 쿼리 (0) | 2023.06.29 |
DataGrip에서 서버 출력을 설정하는 방법 (0) | 2023.06.29 |
파이썬에서 연쇄적인 방법을 끊는 방법은 무엇입니까? (0) | 2023.06.24 |