我标记为--assume-unchanged
的是什么?有没有办法找出我用这个选项隐藏的东西?
我已经挖掘了.git/
目录并且没有看到任何看起来像我期望的东西,但它必须在某个地方。我已经忘记了几周前我用这种方式标记的内容,现在我需要为未来的开发人员记录这些细节。
答案 0 :(得分:408)
您可以使用git ls-files -v
。如果打印的字符是小写的,则文件标记为假设未更改。
仅打印未使用的文件:
git ls-files -v | grep '^[[:lower:]]'
要拥抱懒惰的程序员,请将其转换为git alias。修改您的.gitconfig
文件以添加此代码段:
[alias]
ignored = !git ls-files -v | grep "^[[:lower:]]"
现在输入git ignored
将为您提供如下输出:
h path/to/ignored.file
h another/ignored.file
答案 1 :(得分:56)
git ls-files -v | grep "^[a-z]"
恕我直言,git hidden
更适合标记为--assume-unchanged
的文件:
git config --global alias.hidden '!git ls-files -v | grep "^[a-z]"'
以下是我在~/.gitconfig
中的相关别名列表:
[alias]
hide = update-index --assume-unchanged
unhide = update-index --no-assume-unchanged
unhide-all = update-index --really-refresh
hidden = !git ls-files -v | grep \"^[a-z]\"
ignored = !git status -s --ignored | grep \"^!!\"
使其在子目录中工作并支持参数:
hidden = "!f(){ git -C \"$GIT_PREFIX\" ls-files -v \"$@\" | grep \"^[a-z]\";}; f"
ignored = "!f(){ git -C \"$GIT_PREFIX\" status -s --ignored \"$@\" | grep \"^!!\";}; f"
例如:
# cd target
# git ignored classes
对我来说,大多数隐藏文件都标有标记h
,但根据git-ls-files
{{1}手册实际上还有其他几个标记} 强>:
-v
关于-v
Similar to -t, but use lowercase letters for files that are
marked as assume unchanged (see git-update-index(1)).
git ls-files
:
-t
答案 2 :(得分:22)
此命令对我来说更加一致。它将仅打印列为'假设未更改的文件'。
git ls-files -v|grep "^h"
我在不同的环境中使用了很多次,效果很好。
答案 3 :(得分:7)
PowerShell解决方案,使用 Select-String \ sls
git ls-files -v | sls -pattern ^h -casesensitive
答案 4 :(得分:3)
Windows命令行解决方案,使用 findstr :
git ls-files -v | findstr /B h