[英]Git diff -name-only with full file path
目前使用:
git diff -name-status
现在这只会给我以下输出:
自述文件
创建.txt
测试.txt
但是我正在寻找更像这样的东西:
/用户/github/README.md
/用户/github/created.txt
/用户/github/test.txt
有谁知道这样的事情是否可能?
澄清一下:来自链接帖子的评论指出:所有输出都将返回相对于 git rev-parse --show-toplevel 的路径,这正是问题所在,因为我希望包含顶级之前的路径。
基于 torek 的回答,我能够使用--line-prefix
标志在一行中实现这一点:
git diff --name-only --line-prefix=`git rev-parse --show-toplevel`/ HEAD release
只需自己添加顶级:
git rev-parse --show-toplevel
打印 Git 存储库的路径。
通过例如sed -e "s,^,$path,"
diff --name-only
输出(假设您的路径名中没有逗号):
git-diff-with-abs-path() {
local path
path=$(git rev-parse --show-toplevel) &&
git diff --name-only "$@" | sed "s,^,$path/,"
}
编辑 #2:对于--name-status
,名称出现在文字选项卡之后,因此:
git-diff-with-abs-path() {
local path tab=$'\t'
path=$(git rev-parse --show-toplevel) &&
git diff --name-status "$@" | sed "s,$tab,$tab$path/,"
}
稍微想一下,您可以让它从$@
部分中选择--name-only
或--name-status
并计算正确的 sed 表达式,而不是硬编码--name-only
或--name-status
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.