我可以得到一个文件列表标记 – 未经修改吗?

我标记为--assume-unchanged什么--assume-unchanged ? 有什么方法可以找出我用这个选项藏起来的东西吗?

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

你可以使用git ls-files -v 。 如果打印的字符是小写的,则文件被标记为不变。

要仅打印未更改的文件,请使用:

 git ls-files -v | grep '^[[:lower:]]' 

要拥抱你的懒惰程序员,把它变成一个git别名 。 编辑你的.gitconfig文件来添加这个片段:

 [alias] ignored = !git ls-files -v | grep "^[[:lower:]]" 

现在键入git ignored会给你这样的输出:

 h path/to/ignored.file h another/ignored.file 

一个class轮

 git ls-files -v | grep "^[az]" 

使用别名

恕我直言, git hidden更好的文件标记为 – --assume-unchanged

 git config --global alias.hidden '!git ls-files -v | grep "^[az]"' 

以下是~/.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 \"^[az]\" ignored = !git status -s --ignored | grep \"^!!\" 

为了使它在子目录和支持参数中工作

  hidden = "!f(){ git -C \"$GIT_PREFIX\" ls-files -v \"$@\" | grep \"^[az]\";}; f" ignored = "!f(){ git -C \"$GIT_PREFIX\" status -s --ignored \"$@\" | grep \"^!!\";}; f" 

例如:

  # cd target # git ignored classes 

关于文件状态

对我来说,大多数隐藏的文件都用h标记,但根据git-ls-files -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

 This option (-t) identifies the file status with the following tags (followed by a space) at the start of each line: H cached S skip-worktree M unmerged R removed/deleted C modified/changed K to be killed ? other 

这个命令对我来说更加一致。 它将仅打印列为“假定 – 不变”的文件。

 git ls-files -v|grep '^h' 

我已经在不同的环境中使用了很多次,并且完美地工作。

正如由beautifulcoder指出的如果您使用Windows命令提示符而不是git bash使用“而不是”。