Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从git检索二进制文件_Git - Fatal编程技术网

从git检索二进制文件

从git检索二进制文件,git,Git,我知道,将二进制文件提交到git repo是愚蠢的,通常被认为是个坏主意,但仍然: 是否可以从git repo中将二进制文件检索到某个临时文件夹 我是指给定的提交散列?当然:git checkout将检查它所属的位置,git show将它显示到标准输出。因此,如果有一个名为commitb6636ec88ba0750aec2706865653eb55031fb892的标记v2.3最终包含文件dir1/dir2/image.jpg(这是一个二进制文件),那么: 将其副本放入具有不同名称和扩展名的文件

我知道,将二进制文件提交到git repo是愚蠢的,通常被认为是个坏主意,但仍然:

是否可以从git repo中将二进制文件检索到某个临时文件夹


我是指给定的提交散列?

当然:
git checkout
将检查它所属的位置,
git show
将它显示到标准输出。因此,如果有一个名为commit
b6636ec88ba0750aec2706865653eb55031fb892
的标记
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