Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Git中检索特定提交中的文件路径_Git_Github_Logging_Show_Filepath - Fatal编程技术网

在Git中检索特定提交中的文件路径

在Git中检索特定提交中的文件路径,git,github,logging,show,filepath,Git,Github,Logging,Show,Filepath,我有一个git存储库中的提交id和文件名列表。我需要的是根据提交id获取列表中每个文件的文件路径。但我不知道如何使用git命令来实现这一点 假设我有一个提交id和文件名:[cb85815bc1,GuiCommonElements.java]。 现在我需要提交id中文件的完整路径。因此,输出应该类似于path/path/path/GuiCommonElements.java 我尝试了许多命令,但没有给我这样的结果 git show cb85815bc1 --grep='GuiCommonEleme

我有一个git存储库中的提交id和文件名列表。我需要的是根据提交id获取列表中每个文件的文件路径。但我不知道如何使用git命令来实现这一点

假设我有一个提交id和文件名:[cb85815bc1,GuiCommonElements.java]。 现在我需要提交id中文件的完整路径。因此,输出应该类似于path/path/path/GuiCommonElements.java

我尝试了许多命令,但没有给我这样的结果

git show cb85815bc1 --grep='GuiCommonElements.java'
git log cb85815bc1 --grep='GuiCommonElements.java' --name-only
任何帮助都将不胜感激。

git show或git log-p,它做的事情非常相似,但在多个提交上运行,这将使提交与其父级不同。添加-name只会减少diff输出,以仅显示更改的文件名,而不是更改的文件名加上指令集

您可能希望在这里使用git ls tree,它显示提交中包含的文件名。如果您不在存储库的顶层,git ls树默认只显示当前目录中的内容,因此您可能需要添加-r-full树。然后,您希望查找包含选定名称或以选定名称结尾的内容:

git ls-tree -r --full-tree cb85815bc1 | grep GuiCommonElements.java
这是有点缺陷的,因为grep本身接受正则表达式参数并显示匹配的行,所以它不仅会显示如下文件:

lib/old/GuiCommonElements.java
lib/new/GuiCommonElements.java
而且:

other/ThisIsNotGuiCommonElements.java
因为它包含GuiCommonElements.java和:

因为。匹配任何一个角色,包括X。但它可能足够好了,如果你喜欢,你可以稍微支撑一下

声称需要。。。参数是要匹配的模式,但glob模式在这里似乎不起作用:如果globs起作用,***/GuiCommonElements.java”会起作用,但在我刚才的测试中,它们没有起作用。

git show或git log-p,它做一些非常类似的事情,但在多个commit上操作,会将commit与其父级区分开来。添加-name只会减少diff输出,以仅显示更改的文件名,而不是更改的文件名加上指令集

您可能希望在这里使用git ls tree,它显示提交中包含的文件名。如果您不在存储库的顶层,git ls树默认只显示当前目录中的内容,因此您可能需要添加-r-full树。然后,您希望查找包含选定名称或以选定名称结尾的内容:

git ls-tree -r --full-tree cb85815bc1 | grep GuiCommonElements.java
这是有点缺陷的,因为grep本身接受正则表达式参数并显示匹配的行,所以它不仅会显示如下文件:

lib/old/GuiCommonElements.java
lib/new/GuiCommonElements.java
而且:

other/ThisIsNotGuiCommonElements.java
因为它包含GuiCommonElements.java和:

因为。匹配任何一个角色,包括X。但它可能足够好了,如果你喜欢,你可以稍微支撑一下


声称需要。。。参数是要匹配的模式,但glob模式在这里似乎不起作用:如果globs起作用,***/GuiCommonElements.java”会起作用,但在我刚才的测试中,它们没有起作用。

如果提交有四个不同的文件路径,所有路径都以路径组件结尾或包含路径组件,该怎么办?例如,如果提交cb85815bc1包含d1/GuiCommonElements.java、d2/GuiCommonElements.java、lib/old/GuiCommonElements.java和lib/new/GuiCommonElements.java,该怎么办?@torek应检索所有路径如果提交有四个不同的文件路径,所有路径都以该路径组件结尾或包含该路径组件,该怎么办?例如,如果commit cb85815bc1包含d1/GuiCommonElements.java、d2/GuiCommonElements.java、lib/old/GuiCommonElements.java和lib/new/GuiCommonElements.java怎么办?@torek应检索所有路径