git diff--仅名称,不带文件路径

git diff--仅名称,不带文件路径,git,git-diff,Git,Git Diff,如何执行以下命令以获取没有路径的文件名 因此,从字面上看,命令所说的“仅限名称”——不是文件路径,只是文件名 git diff --name-only <commit> <commit> git diff——仅限名称 AFAIK这不是git提供的,因为这是一个非常不寻常的要求。例如,我在我的存储库中的第一次尝试产生了大约12行,每行都说pom.xml,因为我刚刚创建了一个新版本 不过,您可以使用一个小脚本basename是你在这里的朋友 我喜欢xargs所以我会这样做

如何执行以下命令以获取没有路径的文件名

因此,从字面上看,命令所说的“仅限名称”——不是文件路径,只是文件名

git diff --name-only <commit> <commit>
git diff——仅限名称

AFAIK这不是git提供的,因为这是一个非常不寻常的要求。例如,我在我的存储库中的第一次尝试产生了大约12行,每行都说
pom.xml
,因为我刚刚创建了一个新版本


不过,您可以使用一个小脚本
basename
是你在这里的朋友

我喜欢
xargs
所以我会这样做

git diff --name-only <commit> <commit> | xargs -n1 basename

您总是可以在'git diff--name only'中为i
;不要使用basename$i;完成
如果在不同的子目录中有两个不同的
README.txt
文件怎么办?为什么要忽略路径?那么我希望它只显示一次
README.txt
文件。从我下面的评论中可以看出,“我的经理对包含的文件路径很满意,我认为他不想要它们,所以我惊慌失措,提出了这个问题”不起作用:basename:缺少操作数。还有,我不能用bash。@Everlight,如果你不能用bash,你能用什么?几乎所有的shell都会让你做这样的事情。您是否在Windows上没有
basename
?您可能应该在您的问题中添加任何此类约束。我使用的是RHEL 5.7。因此,Linux终端中的任何内容。@Everlight如果使用第一个版本,这意味着没有来自
git diff
的输出。这个版本对bash也没有特别的依赖关系。对于第一个版本,我假设您指的是您的第一个建议,它给了我输出,“basename:缺少操作数请尝试'basename--help'以了解更多信息。”这对输出中的每一行重复。所以,有输出。如果它对bash没有依赖性,那么我假设它的basename:5.97版本就是问题所在。
for s in `git diff --name-only <commit> <commit>` ; do basename $s ; done