1

基于这个答案,我尝试实现以下内容:

推送到 web 存储库时,我不希望将整个存储库内容复制到我的 web 目录,而只复制某些文件/目录。

所以,在我的post-receive钩子里,我这样做:

GIT_WORK_TREE=/full/path/to/web/directory git checkout -f -- web/index.php

但是,非常奇怪的index.php是目录中的版本永远不会正确更新。虽然git log我的裸存储库目录中显示了推送到它的最新提交,但它的版本index.php是以前的版本。

此外,我创建了一个名为test并将其添加到上面的路径中以复制到工作树中的文件 - 这也没有显示出来。

该文件肯定已执行。我添加了一个echo显示在我的控制台上的命令,并在按预期工作的目录中进行了一些清理。所有文件都在那里并更新。(我检查了一个全新的git clone。)只有一个分支,master

所有这一切都非常令人沮丧,因为当我第一次设置它时它运行良好。不知道这里有什么问题。谢谢。


更新:

我尝试了以下方法:

# added "testfile" at the end of the checkout line in post-receive

echo "Test" > testfile
git add testfile 
git commit -m "Test."
git push web

>...
> remote: error: pathspec 'testfile' did not match any file(s) known to git.
>...

cd ..
git clone <remote web> newdir

>...

cd newdir
cat testfile

> Test

因此,repo 会按预期更新,但找不到新文件。也许路径规范有问题?

4

0 回答 0