我把什么标记为,假设不变?有没有办法用这个选项找出我藏了什么?
我已经挖掘了.git/目录,没有看到任何类似于我所期望的东西,但它一定在某个地方。我已经忘记了几周前这样标记的内容,现在我需要为未来的开发人员记录这些细节。
我把什么标记为,假设不变?有没有办法用这个选项找出我藏了什么?
我已经挖掘了.git/目录,没有看到任何类似于我所期望的东西,但它一定在某个地方。我已经忘记了几周前这样标记的内容,现在我需要为未来的开发人员记录这些细节。
你可以使用git ls-files -v。如果打印的字符是小写,则文件标记为assume-unchanged。
只打印未更改的文件使用:
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
一个衬套
git ls-files -v | grep "^[a-z]"
使用别名
恕我冒昧,git隐藏对于标记为——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 类似于-t,但是在文件中使用小写字母 标记为假设不变(参见git-update-index(1))。
关于git ls-files-t:
这个选项(-t)用以下标记标识文件状态 每行开头(后面加空格): H缓存 年代skip-worktree M unmerged R /删除删除 C修改/改变 K被杀死 ? 其他