繁体   English   中英

Git diff -name-only 与完整文件路径

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM