Git:检查文件是否存在于某个版本中

时间:2013-08-27 09:30:38

标签: git version-control

在我的应用程序中,我使用git进行某些外部文件的版本管理

我正在使用git show HEAD~1:some_file之类的命令来获取文件的某个版本(基于git标记,提交哈希或与HEAD的关系)。 当文件不存在时,输出“致命”消息(我想到stderr管道)。 e.g。

  

致命:'HEAD~1'

中不存在路径'some_file'

是否有一个干净的命令来检查某个文件中是否存在某个文件?

2 个答案:

答案 0 :(得分:13)

你是怎么用的?在脚本中?您始终可以检查退出代码。 git cat-file可能更适合:

git cat-file -e HEAD~1:some_file

使用-e选项,当对象不存在时,它将以非零错误代码退出,而当对象不存在时,它将返回0。但是,它也会打印fatal: Not a valid object name,但这很容易被抑制。

答案 1 :(得分:5)

到目前为止,我发现的最好的事情是:

git ls-tree -r HEAD~1 --name-only

其中输出特定版本中的文件名列表。 我需要解析输出并过滤特定文件。因此,它比我希望的那么直接,但是一块蛋糕。