我正在尝试将一个提交后挂钩添加到裸存储库,这样每当提交时,更改的文件都会自动安装在(硬编码)目录中。
有没有办法从存储库中获取单个文件?
git-clone似乎不允许指定路径,我找到的任何其他命令(git-fetch,git-pull)似乎都需要现有的本地git存储库才能工作。
有办法做到这一点吗?
答案 0 :(得分:3)
您可以使用git show
语法git show <rev>:<filename>
从裸存储库中的任何修订中提取单个文件,例如:
$ ls branches config description HEAD hooks info objects packed-refs refs $ git show master:COPYING > /tmp/COPYING $ head -5 /tmp/COPYING GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies
有a couple of examples in the git-show(1) man page。我希望这有一些用处。
答案 1 :(得分:2)
特别是,git checkout-index
可能会为您完成这项工作:
git checkout-index -a -f --prefix=/destination/path/
不要忘记尾部斜杠,否则此命令将无法完全按照您的要求执行。