我正在使用msysgit(1.7.9),我正在寻找正确的git ls-files
命令调用,以显示当前级别的(跟踪的)文件和目录,无论是从索引还是当前工作目录,如果这是更轻松.
基本上它会给出一个类似于你在Github上看到的目录列表.来自Windows,我不太熟悉正确的方法(?).
jth*_*ill 18
我想你想git ls-tree HEAD
品尝一下.ls-tree输出的第二个字是tree
用于目录,blob
用于文件,commit
用于子模块,文件名是ascii选项卡之后的所有内容
Dav*_*ain 14
我相信git ls-tree --name-only [branch]
会做你想要的.
小智 5
只列出当前工作目录中由 git 跟踪的文件,我发现以下比使用快几倍git ls-tree...
:
ls | grep -f <(git ls-files)
Run Code Online (Sandbox Code Playgroud)
如果您还想包含目录,则需要对 sed 进行一些处理,例如:
ls | grep -f <(git ls-files | sed 's/\/.*//g' | sort | uniq)
Run Code Online (Sandbox Code Playgroud)
假设您的文件名中没有任何“/”字符。也...
ls -a | grep -f <(git ls-files | sed 's/\/.*//g' | sort | uniq)
为了还列出“不可见”(尚未跟踪)的文件。
git ls-tree <tree-ish>
是好的,所有的,但我无法弄清楚如何指定索引的<tree-ish>
.(虽然我确定必须有一些全部大写的参考才能做到这一点.)
无论如何,ls-files
隐式地对索引起作用所以我不妨使用它:
$ git ls-files | cut -d/ -f1 | uniq
Run Code Online (Sandbox Code Playgroud)
这仅显示当前目录中的文件和目录.
改变控制深度cut
的-f
论点.例如,-f-2
(那是破折号 2)显示最多两级的文件和目录:
$ git ls-files | cut -d/ -f-2 | uniq
Run Code Online (Sandbox Code Playgroud)
如果指定<path>
参数ls-files
,请确保增加-f
以适应前导目录:
$ git ls-files foo/bar | cut -d/ -f-3 | uniq
Run Code Online (Sandbox Code Playgroud)