如何使用git推送到我网站上的特定文件夹?

时间:2012-07-31 14:18:33

标签: git

我想做以下事情:

  • 创建一个本地git repo,我们称之为~/my-awesome-app
  • 在我的网站上创建一个文件夹,我们称之为mysite.com/my-awesome-app
  • 只需将我对~/my-awesome-app所做的任何更改推送到mysite.com/my-awesome-app
  • 即可

有人可以解释我如何设置它吗?

2 个答案:

答案 0 :(得分:3)

您可以将mysite.com/my-awesome-app设为git存储库,并将receive.denyCurrentBranch设置为ignore以允许推送,但这样做有风险。

如果我想这样做,我会在我的服务器上创建一个裸存储库,我可以将我的代码推入,然后更改update挂钩以将最新的树导出到mysite.com/my-awesome-app (并可选择重启应用程序)。这样,存储库和部署的副本是两个不同的东西。

答案 1 :(得分:1)

远程服务器上的〜/ mysite.com 是否有git repo?如果是这样,就像JamesNoufal所指出的那样,要小心,这种嵌套可能会有问题。

考虑以下解决方案,无论它是否嵌套都应该有效:

  1. 〜/ mysite.com 之外创建 my-awesome-app repo(比如〜/ my-awesome-app
  2. 然后〜/ my-awesome-app / 创建符号链接〜/ mysite.com / my-awesome-app
  3. 为安全起见,将〜/ mysite.com / my-awesome-app / 添加到〜/ mysite.com / .gitignore 文件中以将其排除来自〜/ mysite.com / repo。
  4. 的行动

    在远程服务器上,从shell:

    mkdir ~/my-awesome-app/
    ln -s ~/my-awesome-app/ ~/mysite.com/my-awesome-app
    echo /my-awesome-app >> ~/mysite.com/.gitignore
    

    当从本地 my-awesome-app 分支向远程服务器发布提交时,我会使用路径〜/ my-awesome-app 作为上传/相对目录而不是〜/ mysite.com / my-awesome-app。这应该可以让你从一些试图提升文件结构的厚脸皮IDE中寻找git repos。

    最后,我会考虑在〜/ my-awesome-app 添加远程仓库,而不仅仅是通过sftp / ftp或ssh在没有repoo的情况下发送文件。这使您可以维护高度稳定的生产环境,同时仍然可以使用可伸缩gitflow方法将修补程序重新包含到本地开发副本中。

    Vincent Driessen对{gitflow进行了很好的讨论here


    更新:符号链接的替代方法

    您可以改为对您网站的配置进行更改,而不是符号链接(可能会被删除):

    # creates the alias
    <IfModule mod_alias.c>
         Alias /my-awesome-app /path/to/my-awesome-app/
    </IfModule>
    
    # allows people to access the path
    <Directory /path/to/my-awesome-app/>
            Order allow,deny
            Allow from all
    </Directory>
    

    然后当你推送时,你应该使用/ path / to / my-awesome-app /。我仍然会在〜/ mysite.com / .gitignore中留下 / my-awesome-app 行只是为了安全但没有符号链接,git应该永远不会在我的awesome-app repo中绊倒在〜/ mysite.com /.

    上行动时