使用接收后脚本在远程上进行 Git sparse-checkout

标签 git git-post-receive sparse-checkout

我正在尝试弄清楚如何执行以下操作(并弄清楚它是否可能)。

我有一个本地 git 存储库,其中包含许多用于各种用途的文件夹,但我希望能够使用 git 将我的网站部署到我的开发服务器上,实际上只有一个文件夹的内容应该进入远程 webroot(只是文件夹的内容,而不是文件夹本身,这是困难的一点)。我将 git 推送到开发服务器,进入 Web 可访问文件夹之外的裸存储库,然后我使用接收后脚本将所有工作文件放入 webroot。但是,这会复制所有文件夹,显然我只想在操作完成后移动一个特定文件夹的内容。

做一些研究,看起来稀疏 checkout 很合适。更新:我现在让它工作,它将只复制一个特定的文件夹,但我仍然没有让它忽略文件夹本身并只提取内容。我认为这与我添加到 .git/info/sparse-checkout 的路径/通配符有关,但我不确定排除目录但不排除其内容的模式是什么。

有什么好的方法吗?我是否应该只使用接收后脚本手动复制我想要的目录的内容,而不是尝试使用稀疏 checkout 直接执行此操作?

我很感激任何人愿意提供的帮助。谢谢!

最佳答案

一个更简单的方法是:

  • /tmp/YourRepo/Yourdirectory 中执行稀疏检查(YourDirectory 是您试图忽略的那个,因为只有它的内容是感兴趣的)
  • 移动 /tmp/Yourdirectory 的内容到正确的目标目录

关于使用接收后脚本在远程上进行 Git sparse-checkout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11872745/

相关文章:

git - 如何从git获取两个日期之间指定用户的差异?

git - 如何在一个 Git 仓库中实现/管理多个项目?

git - 跳过处理先前已经处理过的 post-receive Hook 中的 Git 修订

git - 是否可以在不首先检查整个存储库的情况下进行稀疏检查?

git - 如何 git reset --hard 一个子目录

php - 同时使用 Windows 和 Mac 的 Laravel Homestead

git - 如何 rebase merge 但保留 merge 提交

git - 如何测试 git 钩子(Hook)

git - 为什么 `git -C` 在 Python 的 post receive hook 中不起作用?

git - Jenkins 和 Git 稀疏 checkout