【发布时间】:2011-01-22 17:18:33
【问题描述】:
我将什么标记为--assume-unchanged?有什么方法可以找出我使用该选项隐藏的内容吗?
我翻遍了.git/ 目录,没有看到任何与我期望的一样的东西,但它一定在某个地方。我已经忘记了几周前我以这种方式标记的内容,现在我需要为未来的开发人员记录这些细节。
【问题讨论】:
标签: git
我将什么标记为--assume-unchanged?有什么方法可以找出我使用该选项隐藏的内容吗?
我翻遍了.git/ 目录,没有看到任何与我期望的一样的东西,但它一定在某个地方。我已经忘记了几周前我以这种方式标记的内容,现在我需要为未来的开发人员记录这些细节。
【问题讨论】:
标签: git
PowerShell 解决方案,使用 Select-String \ sls
git ls-files -v | sls -pattern ^h -casesensitive
【讨论】:
Windows 命令行解决方案使用findstr:
git ls-files -v | findstr /B h
【讨论】:
这个命令对我来说更有效。它将仅打印列为“假定未更改”的文件。
git ls-files -v|grep "^h"
我在不同的环境中使用了很多次,并且效果很好。
【讨论】:
grep "^h" 代替单引号
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的手册实际上还有其他几个标志-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
【讨论】:
hidden = "!f() { git ls-files -v \"$@\" | grep \"^[a-z]\"; }; f" 和 ignored = "!f() { git status -s --ignored \"$@\" | grep \"^!!\"; }; f"。例如,这允许git ignored -- PATH1 PATH2 仅列出某些路径中被忽略的文件(当您有很多被忽略的文件时很有用)。
您可以使用git ls-files -v。如果打印的字符是小写,则文件标记为假定未更改。
要只打印未更改的文件,请使用:
git ls-files -v | grep '^[[:lower:]]'
要拥抱您的懒惰程序员,请将其转为git alias。编辑您的 .gitconfig 文件以添加此 sn-p:
[alias]
ignored = !git ls-files -v | grep "^[[:lower:]]"
现在输入 git ignored 会得到如下输出:
h path/to/ignored.file
h another/ignored.file
【讨论】:
.gitconfig 的[alias] 部分下添加的内容:ignored = !git ls-files -v | grep "^[[:lower:]]"
git ls-files -v `git rev-parse --show-toplevel` | grep "^[a-z]"