我可以获得标记为--assume-unchanged的文件列表吗?

时间:2010-03-02 13:00:49

标签: git

我标记为--assume-unchanged的是什么?有没有办法找出我用这个选项隐藏的东西?

我已经挖掘了.git/目录并且没有看到任何看起来像我期望的东西,但它必须在某个地方。我已经忘记了几周前我用这种方式标记的内容,现在我需要为未来的开发人员记录这些细节。

5 个答案:

答案 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