如何从裸Git存储库中获取单个文件?

时间:2014-04-09 12:31:34

标签: git

我有一个远程存储库,我在其中创建了一个git bare repo。 但我希望当我将更改推送到此repo时,git会自动将\ target目录文件夹(working repo)中的.jar放在远程服务器上的特定文件夹中。

我做了这样的后执行钩子:

$ cat > hooks/post-receive
#!/bin/sh
GIT_WORK_TREE=/home/ubuntu/www/mydomain.com
export GIT_WORK_TREE
git checkout -f

有了这个,我在该文件夹中有我的工作副本,但现在我想更改它并且只有一个特定的文件:myfile.jar

如何修改此脚本以实现此目的?

1 个答案:

答案 0 :(得分:0)

使用git show能够获取对象的内容,给定commit-ish和该对象的路径名,记录在该commit-ish引用的提交中。它将对象的内容写入标准输出,因此您必须将其重定向到目标文件(将创建和/或覆盖)。

$ cat > hooks/post-receive
#!/bin/sh
GIT_WORK_TREE=/home/ubuntu/www/mydomain.com
export GIT_WORK_TREE
git show HEAD:path/to/that.jar >"$TARGETDIR"/that.jar