在提交之前访问二进制预修改文件

时间:2014-12-10 18:25:36

标签: git binary diff

假设我们有一个包含两个图像的git存储库:alice.pngbob.png。我们在Initial commit中提交了此内容。

之后,我们会cp bob.png alice.png,因此alice.png将与bob.png具有相同的内容。

执行git diff会显示。

现在,如果我打开alice.png,我会看到鲍勃。如何以编程方式打开/读取/访问旧版alice.png(如果我git checkout alice.png会出现?)


我找到的最佳(这不是一个好的)解决方案是:

  • 将存储库复制到临时目录
  • 执行git checkout .
  • 从原始目录中获取修改过的文件
  • 从临时目录
  • 中读取未修改的文件

但我认为应该有更好的解决方案。


对于非二进制文件git show HEAD:path/to/file does this,但对我来说,在执行git show HEAD:alice.png时,不会输出任何内容。

1 个答案:

答案 0 :(得分:1)

您可以使用git show访问给定提交的文件。由于您的更改仍然未提交,因此旧文件仍位于HEAD

# This opens a file in the pager
git show HEAD:path/to/file

# Save the file to disk
git show HEAD:alice.png > temp.png

如果您的图像查看器支持stdin上的管道,例如ImageMagick的display,您可以直接查看图像。

git show HEAD:alice.png | display