我想从Git中的特定版本中检索文件。以前我使用git show
命令使用此线程中描述的方法:How to retrieve a single file from specific revision in Git?含义:
git show HEAD2:file.txt
但是,基于我在其他帖子中解释的问题:Read both binary and text from process output我无法从git show
的输出中读取二进制数据。根据SO用户的建议,我转移到JGit作为Java的本机实现。我在SO上找到了这个线程,它描述了如何使用JGit API从特定版本中退出文件。 How to "cat" a file in JGit?
性能对我的项目至关重要。因此,我正在寻找检索文件的最佳方法。上面描述的API方法似乎在树中导航并获得正确的修订。考虑到我可以在Git中使用单个命令来检索文件,我不确定哪个更快。
git show
命令?答案 0 :(得分:1)
您可以使用
git checkout version -- path/to/file
此外,如果你想让它去其他地方,你可以
git --git-dir=.git --work-tree=somewhere/else checkout version -- path/to/file
答案 1 :(得分:1)
嗯,知道哪一个更快的唯一方法是在它们将被使用的情况下进行测量。其他任何事情都是猜测。
对于通常从Git存储库中获取此信息所需的工作,git show
和JGit之间的相同。它是这样的:
有关详细信息,请参阅the chapter about Git Internals of the Pro Git book。