当前使用:
git diff -name-status
现在,这只会给我以下输出:
README.md
created.txt
test.txt
但是我正在寻找更多类似这样的东西:
/User/github/README.md
/User/github/created.txt
/User/github/test.txt
有人知道这样的事情是否可能吗?
要澄清:链接文章中的评论指出: 所有输出将返回相对于git rev-parse --show-toplevel的路径 这正是我希望将顶层之前的路径包括在内的问题。
答案 0 :(得分:2)
只需自己添加最高级别:
git rev-parse --show-toplevel
打印Git存储库的路径。
通过例如--name-only
来输入差异sed -e "s,^,$path,"
的输出(假设您的路径名中没有逗号):
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
。
答案 1 :(得分:0)
基于torek的答案,我能够使用--line-prefix
标志在一行中实现此目标:
git diff --name-only --line-prefix=`git rev-parse --show-toplevel`/ HEAD release