克隆裸git存储库的单个路径

时间:2009-09-01 07:47:53

标签: git clone fetch post-commit pull

我正在尝试将一个提交后挂钩添加到裸存储库,这样每当提交时,更改的文件都会自动安装在(硬编码)目录中。

有没有办法从存储库中获取单个文件?

git-clone似乎不允许指定路径,我找到的任何其他命令(git-fetch,git-pull)似乎都需要现有的本地git存储库才能工作。

有办法做到这一点吗?

2 个答案:

答案 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)

您可以在How to do a "git export"

中找到答案

特别是,git checkout-index可能会为您完成这项工作:

git checkout-index -a -f --prefix=/destination/path/

不要忘记尾部斜杠,否则此命令将无法完全按照您的要求执行。