Mar*_*air 74
的输出git status --porcelain,设计很容易在脚本解析,输出的完整路径,而不是相对路径无论在哪里,你的当前目录树中.
每行输出git status --porcelain都有两个前导字符,表示文件的状态(例如,它是否未跟踪,修改,新建,删除等)后跟一个空格,所以如果你只想要所有内容的完整路径,那么输出git status你可以这样做:
git status --porcelain | sed s/^...//
Run Code Online (Sandbox Code Playgroud)
ear*_*ils 57
我认为切割对此有好处.
git status -s | cut -c4-
Run Code Online (Sandbox Code Playgroud)
seh*_*ehe 43
啊哈,我想我只是理解了这个问题:你想要基地名字吗?请| while read a; do basename "$a"; done执行以下任何操作:
怎么样
git diff --name-only
对于相对于索引的更改
git diff --name-only --staged
为......好上演的chages :)
git diff --name-only HEAD
得到了两个
要获得文件名,请按照您的要求:
git status --porcelain | sed -e 's!.*/!!'
Run Code Online (Sandbox Code Playgroud)
我看不出这有用.
一个更简单的解决方案,内置于git使用ls-files.
从文档:
选项
-c --cached 在输出中显示缓存文件(默认)
-d --deleted 在输出中显示已删除的文件
-m --modified 在输出中显示修改过的文件
-o --others 在输出中显示其他(即未跟踪)文件
-i --ignored 在输出中只显示被忽略的文件。在索引中显示文件时,仅打印与排除模式匹配的文件。显示“其他”文件时,仅显示与排除模式匹配的文件。标准忽略规则不会自动激活,因此至少需要 --exclude* 选项之一。
-s --stage 在输出中显示暂存内容的模式位、对象名称和阶段编号。
-u --unmerged 在输出中显示未合并的文件(forces --stage)
显示标志的示例也可以组合:
git ls-files -dmo
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20582 次 |
| 最近记录: |