Ric*_*sen 85
文档ls-files
并没有写得清楚,但看起来以下简单的别名可以完成这项工作:
git config --global alias.showtrackedignored "ls-files -i --exclude-standard"
Run Code Online (Sandbox Code Playgroud)
上面的命令创建一个名为的别名showtrackedignored
.要使用,请运行:
git showtrackedignored
Run Code Online (Sandbox Code Playgroud)
它将列出当前目录中的所有文件和被跟踪的子目录,但如果未跟踪它们将被忽略.
git ls-files
不幸的是,这不能100%可靠地工作.显然Git的的确发现,应将文件的一个好工作不被忽略,但搜索该文件时被忽略(-i
选项git ls-files
),它没有列出的目录里面被忽略的文件,如果它是相匹配的忽略规则的目录.
要解决此错误,请尝试转换忽略规则,以便只匹配文件,而不是目录(这并不总是可行).
(感谢Christoph发现此错误并将其报告给Git邮件列表!编辑:现在正在修补补丁并将其转换为git 1.7.11.2或更高版本)
这是一种不同的方法.它复杂得多,可能会破坏角落的情况.
git config --global alias.showtrackedignored '!
cd "${GIT_PREFIX}" &&
untracked_list=$(git rev-parse --git-dir)/ignored-untracked.txt &&
git ls-files -o -i --exclude-standard >"${untracked_list}" &&
GIT_INDEX_FILE="" git ls-files -o -i --exclude-standard | grep -Fvxf "${untracked_list}" &&
rm -rf "${untracked_list}"'
Run Code Online (Sandbox Code Playgroud)
别名执行以下操作:
cd
回到其中目录git showtrackedignored
是从运行(GIT运行从顶层目录,而不是当前目录基于壳别名;参见上一节alias.*
中git help config
)untracked_list
.此变量保存临时文件的路径,该文件将包含当前忽略的文件列表.此临时文件位于.git
目录中.${untracked_list}
.grep
,用于过滤掉写入的文件${untracked_list}
.${untracked_list}
.这种方法的缺点:
.git
目录中创建一个临时文件.grep
.它也遭受与前别名相同的错误.
Tim*_*oot 12
根据理查德的回答,在这里留下这个:
git ls-files -i --exclude-standard | xargs git rm --cached
这将删除被忽略的每个跟踪文件.gitignore
.
归档时间: |
|
查看次数: |
10209 次 |
最近记录: |