2016-08-05 63 views
0

我需要在以前的提交中运行“git show”,但是需要为特定文件运行。我使用了下面的命令,但它不起作用。在特定文件上的上一个SHA中的“Git show”

混帐显示SHA〜1:FILE_PATH

可能是什么可能工作的命令?

+1

'git show '将显示该特定路径的内容。你想要什么? – torek

+0

@torek我认为OP希望看到特定文件的补丁。但这就是'git diff'的作用。 –

+0

我想在特定的版本之前获取某个版本的特定文件的内容。 git show 正在工作,但不幸 git show 不起作用。 –

回答

0

我无法重现您的问题,因为此命令应该工作。

这个命令显示了完整的文件,因为它是在你要告诉它的特定提交上。

如果你想显示上提交该补丁到本地WORKDIR的差异,使用语法来代替:

git diff <revision> <path> 

git diff SHA~1 file_path 

如果你想显示该文件的补丁,使用

git log -p -1 <revision> <path> 
+0

感谢您的及时回应,但我只想用“git show”而不是其他命令。 有反正我可以得到以前的命令,而不是使用sha〜1吗? –

+0

为了得到你的头的父母提交,你可以使用'git log --pretty ='格式:%H'HEAD^-1' – blue112

+0

感谢您的评论。 我想获得一个任意sha的前一个sha,而不仅仅是头部sha。 –

0

在提交时运行git show只会显示与该提交相关的差异。来自documentation

对于提交它显示日志消息和文本差异。

如果你想看到的差异对于一个特定的文件,你需要使用git diffrange syntax

git diff SHA-1^:path/to/file..SHA-1:path/to/file 

这将显示您在path/to/file的差异与指定的SHA-提交之间1及其父母,参考SHA-1^。您可以阅读关于ancestry references的文档中引用父母提交的不同方式。

+0

'git show '显示特定文件和特定版本的存储库内容。 我的问题是如何才能得到相同的结果为以前的版本沙只是唱git show命令。 –

+0

我明白了。你在用什么外壳? –

+0

其实我没有使用shell命令。 我正在使用gitpython来运行git命令。 'res = repository.git。show(“%s:%s”%(revision,'file_path'))' 但它不适用于 'res = repository.git.show(“%s:%s”%(revision +'〜1' ,'file_path'))' 我发现git也没有使用类似的命令。 –

相关问题