git只推一个文件夹

时间:2017-10-24 08:13:37

标签: git web webserver

以下是我的情况:

在我的本地仓库中,我有几个不同的文件夹,直到现在我一直只使用ftp将一个文件夹的内容上传到Web服务器。例如,在我的git repo中,我有一些文件夹,source,phonegap,cordova和其他一些文件夹。我将源文件夹的内容上传到webserver文件夹。

我想通过使用git推送到网络服务器来简化这个工作流程。你已经看到了问题,我只想推送我的源文件夹的内容。

我认为可能有两种方式: 1:git中有一种方法可以将此文件夹的内容推送到服务器(unikely) 2:通过使用黑魔法使用户认为他们在website.com/app上但是从website.com/appsource/source

获取其文件,还有其他解决此问题的方法

你们有解决方案吗?

1 个答案:

答案 0 :(得分:0)

有几种方法可以解决这个问题。

您可以将Web服务器设置为将任何给定的URL映射到任何给定的文件系统路径,如您在第二个选项中所建议的那样。如何执行此操作取决于您使用的是哪种Web服务器软件,因此您可以查阅您的Web服务器文档,或者如果您在那里找不到答案,请发布标记有特定Web服务器软件的问题如何配置其URL映射。

您可以在文件系统级别解决问题,方法是在一条路径上推送到一个repo并创建一个符号链接或快捷方式(取决于操作系统/文件系统),将您的Web服务器内容根指向{{1 }} 目录。再次,请查阅您的OS / fs的文档或发布带有相关信息和标签的问题。

由于您已将其发布为git问题:最直接的基于git的解决方案(但不是我特别推荐的解决方案)是设置一个将文件复制到Web的后接收挂钩每次推送后服务器。如果由于某种原因你选择这个而不是简单的非基于git的解决方案,你可以在这里阅读git hooks:https://git-scm.com/book/gr/v2/Customizing-Git-Git-Hooks

不是我在这里推荐其中任何一个,而是为了记录:请注意,虽然您不能将子目录推送到服务器,但有两种方法可以获得类似的效果。您可以将源目录拆分为自己的仓库,然后将其作为子模块包含在父仓库中(但是有一些成本和复杂性) - 然后您可以只推送源仓库。或者,您可以使用稀疏结账仅更新工作树的一个文件夹 - 但这并不能解决签出文件将出现在名为source/的目录中的事实。

无论如何,如果您将问题解决为服务器设置问题而不是git问题,那么您提出的问题会更容易解决。