从git检索二进制文件
我知道,将二进制文件提交到git repo是愚蠢的,通常被认为是个坏主意,但仍然: 是否可以从git repo中将二进制文件检索到某个临时文件夹从git检索二进制文件,git,Git,我知道,将二进制文件提交到git repo是愚蠢的,通常被认为是个坏主意,但仍然: 是否可以从git repo中将二进制文件检索到某个临时文件夹 我是指给定的提交散列?当然:git checkout将检查它所属的位置,git show将它显示到标准输出。因此,如果有一个名为commitb6636ec88ba0750aec2706865653eb55031fb892的标记v2.3最终包含文件dir1/dir2/image.jpg(这是一个二进制文件),那么: 将其副本放入具有不同名称和扩展名的文件
我是指给定的提交散列?当然:
git checkout
将检查它所属的位置,git show
将它显示到标准输出。因此,如果有一个名为commitb6636ec88ba0750aec2706865653eb55031fb892
的标记v2.3
最终包含文件dir1/dir2/image.jpg
(这是一个二进制文件),那么:
将其副本放入具有不同名称和扩展名的文件中,并且:
git checkout b6636ec88ba0750aec2706865653eb55031fb892 -- dir1/dir2/image.jpg
(在repo中运行时)将签出标记为v2.3
的版本(因为v2.3
只是b6636ec88ba0750aec2706865653eb55031fb892
)到您的工作目录的正常路径下,即使工作目录的其余部分处于其他版本(可能是分支尖端)
编辑(按注释):请注意,特定版本和路径的
git checkout
将“写入”索引/暂存区域,即,将使索引中的文件处于要提交的更改
状态(如git status
所示)。如果您不想这样做,您可能更喜欢不影响索引的git show
变体。git checkout
适用于二进制文件。因此,当您签出时,将替换文件夹中的文件。然后重置它,使其返回到上次提交的版本。对吧?我是说你得把脑袋还给我。。。如何做到这一点?当您使用git checkout--path
时,git会“通过”索引将签出的文件写入给定的路径。因此,如果要取消此操作,请使用git reset HEAD--path
,或使用git show
以避免将其“通过”索引写入。请注意,普通(aka--mixed
)重置不会影响工作目录版本。
git checkout b6636ec88ba0750aec2706865653eb55031fb892 -- dir1/dir2/image.jpg