--assume-unchanged
是什么?有没有办法找出使用该选项隐藏的内容?我浏览了
.git/
目录,但看不到任何看起来像我期望的东西,但是它必须在某个地方。我已经忘记了几周前以这种方式标记的内容,现在我需要为以后的开发人员记录这些详细信息。#1 楼
您可以使用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
#2 楼
一线纸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
评论
易于记忆的好别名:)谢谢
– Debajit
16年6月29日在20:56
以下是一些更灵活的变体:hidden =“!f(){git ls-files -v \” $ @ \“ | grep \” ^ [az] \“;}; f”并被忽略=“!f() {git status -s --ignored \“ $ @ \” | grep \“ ^ !! \”;}; f“。例如,这允许git ignore-PATH1 PATH2仅列出某些路径中的被忽略文件(在您有很多被忽略的文件时很有用)。
–sls
16年7月13日在8:05
谢谢你的别名
– MOHRE
17年5月17日在6:11
#3 楼
该命令对我来说更加一致。它将仅打印列为“假定未更改”的文件。git ls-files -v|grep "^h"
我已经在不同的环境中使用了很多次,并且效果很好。
评论
在Windows提示符下,使用grep“ ^ h”代替单引号
–beautifulcoder
2015年9月29日12:00
#4 楼
使用Select-String \ sls的PowerShell解决方案git ls-files -v | sls -pattern ^h -casesensitive
#5 楼
使用findstr的Windows命令行解决方案:git ls-files -v | findstr /B h
评论
git ls文件-v | grep ^ [a-z]
– Matt R
2010年5月7日15:39
我的操作系统显然具有奇怪的排序规则设置,因此Matt的命令对我不起作用。这是我在.gitconfig的[alias]部分下添加的内容:ignore =!git ls-files -v | grep“ ^ [[:: lower:]]”
–安倍·沃克(Abe Voelker)
2011年9月3日22:55
[a-z]不起作用的原因是shell将其扩展为通配符;如果当前目录包含与该模式匹配的文件(即单个小写字母),则该文件的扩展名是该文件的名称。尝试添加引号,例如“ [a-z]”
–DomQ
2012年9月9日13:10
git ls文件-v | grep -e“ ^ [a-z]”
–阿米尔·阿里·阿克巴里(Amir Ali Akbari)
13年4月1日在10:17
建议的别名可用于在当前目录及以下目录中查找未更改的文件。如果您想要存储库中所有“假定不变”文件的列表,则需要git ls-files -v`git rev-parse --show-toplevel` | grep“ ^ [a-z]”
–Trebor粗鲁
13年5月15日在15:43