Undo git update-index --skip-worktree

后端 未结 7 2021
陌清茗
陌清茗 2020-12-07 07:43

A while ago I did this to ignore changes to a file tracked by git:

git update-index --skip-worktree 

Now I actually want to com

相关标签:
7条回答
  • 2020-12-07 08:23

    Aha! I simply want:

    git update-index --no-skip-worktree <file>
    
    0 讨论(0)
  • 2020-12-07 08:31

    Based on @GuidC0DE answer, here's a version for Powershell (I use posh-git)

    git update-index --no-skip-worktree $(git ls-files -v | sls -pattern "^S"| %{$_.Line.Substring(2)})
    

    And for reference also the opposite command to hide the files:

    git update-index --skip-worktree $(git ls-files --modified)
    
    0 讨论(0)
  • 2020-12-07 08:33

    For all of you that love Bash aliases, here is my set to rule them all(based on 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'
    
    0 讨论(0)
  • 2020-12-07 08:33

    For those using Tortoise Git:

    1. Right click on the folder or on the specific file, then choose TortoiseGit > Check for modifications
    2. Only check Show ignore local changes flagged files. You should see the file that you ignored (or all the files you've ignored, if you've right clicked on the folder)
    3. Right click on the file and choose Unflag as skip-worktree and assume-unchanged
    0 讨论(0)
  • 2020-12-07 08:41

    If you want to undo all files that was applied skip worktree, you can use the following command:

    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 will print all files with their status
    2. grep -i ^S will filter files and select only skip worktree (S) or skip worktree and assume unchanged (s), -i means ignore case sensitive
    3. cut -c 3- will remove status and leave only paths, cutting from the 3-rd character to the end
    4. tr '\012' '\000' will replace end of line character (\012) to zero character (\000)
    5. xargs -0 git update-index --no-skip-worktree will pass all paths separated by zero character to git update-index --no-skip-worktree to undo
    0 讨论(0)
  • 2020-12-07 08:44

    According to http://www.kernel.org/pub/software/scm/git/docs/git-update-index.html, use

    git ls-files -v

    to see the "assume unchanged" and "skip-worktree" files marked with a special letter. The "skip-worktree" files are marked with S.

    Edit: As @amacleod mentioned, making an alias to list all the hidden files is a nice trick to have so that you don't need to remember it. I use alias hidden="git ls-files -v | grep '^S'" in my .bash_profile. It works great!

    0 讨论(0)
提交回复
热议问题