【问题标题】:Set the Apache htdocs/subfolder as GIT working dir将 Apache htdocs/子文件夹设置为 GIT 工作目录
【发布时间】:2011-12-15 16:06:55
【问题描述】:

我刚开始尝试学习 Git,但我有点卡住了。我们正在使用 Github 来保存我们的“稳定”项目,但我在使用 repo 时遇到了问题。

我想知道是否可以使用本地网络服务器 htdocs/[projectname] 作为工作目录 - 这样我可以从 github 克隆 repo,在本地服务器上处理它(所以它可以像应用程序允许我一样工作测试我正确编写的所有内容),然后从那里进行阶段->提交。

我正在使用 MAMP 环境的 Mac 上工作。该应用程序是基于 PHP 的 CMS。我们将它保存在 Github 上的一个私有存储库中。目前 Git 似乎使用 /Users/Ben/Core-CMS 作为工作目录,但这使得测试变得非常困难 - 如果工作目录在 apache htdocs 目录中会更好

我购买了 Pro Git,但我很难学习 git 的概念 - 我故意避免使用 GUI,因为我希望在开始“作弊”之前正确了解 Git 的内部工作原理!

【问题讨论】:

  • 您能否提供有关您的设置的更多详细信息? (你的工作目录在哪里,你正在使用的语言/框架等)
  • 当然 - 我正在使用 MAMP 环境的 Mac 上工作。该应用程序是基于 PHP 的 CMS。我们将它保存在 Github 上的一个私有存储库中。目前 Git 似乎使用 /Users/Ben/Core-CMS 作为工作目录,但这使得测试变得非常困难 - 如果工作目录在 apache htdocs 目录中会更好。

标签: apache git htdocs


【解决方案1】:

如果您有权写入htdocs 目录,只需将/Users/Ben/Core-CMS 移动到htdocs/Core-CMS 并通过http://localhost/Core-CMS 访问它。

如果你不能在htdocs 目录中写入,我会创建/Users/Ben/web,将我的项目放在那里并告诉 apache 从那里服务。要告诉 apache 查看 /Users/Ben/web 来为您的项目提供服务,请在您的 apache conf 中查找以下行:

DocumentRoot /path/to/htdocs

并将其替换为:

DodumentRoot /Users/Ben/web

【讨论】:

  • 认真的吗?我没想到会那么容易!非常感谢:)
  • 一个 git repo 只是一个愚蠢的目录,里面有一个.git,底层的数据结构真的很简单。
  • 请注意,您应该停止 Web 服务器为 .git 目录提供服务,该目录包含私有配置信息(以及所有正在进行的工作)。如果您不想明确地这样做(并且有忘记的风险),您可以考虑设置一个裸存储库,该存储库在被推送到时进行部署,如下所述:toroid.org/ams/git-website-howto
  • 我们的开发服务器受到 HTTP auth 的保护——但这一点要注意!我将添加到 apache 中的排除列表中
【解决方案2】:

这应该不是问题。我一直在这样做。

切换到你的公共目录并运行:

git clone REPO_URL NAME_OF_DIR_TO_CLONE_TO

首先。

克隆 git 存储库的目录不能存在。

您只需要一个授权的 ssh 密钥即可将您的更改从存储库推送到 github 和安装在服务器上的 git(或者如果您已将所有内容安装到本地计算机,则在您的客户端中)。

然后你提交这只是本地的,如果你完成了你可以将你的更改推送到 github。

另一种方法是让网络服务器使用您的工作目录作为其DocumentRoot

我希望我没有在这里错过您的问题;)

【讨论】:

  • 谢谢 - 快速提问 - 当你说“你克隆 git 存储库的目录必须不存在”时。你到底什么意思?克隆路径中不能存在具有该名称的目录?
  • 如果您克隆一个像“git clone URL abc”这样的 git 项目,则不可能有一个名为 abc 的目录——甚至不是一个空的目录——因为它将被创建。如果你尝试这样的事情,Git 会抛出错误消息。
  • 所以 - 只是为了检查这是正确的 - 如果我将 Git 存储库克隆到我的 Mac 上的命名目录,再次在 Git 中使用该存储库(例如,明天),那么我只需要导航到终端中的那个目录,git会知道它是什么repo?因为我似乎有一个问题,git 总是忘记我打开了什么项目,我找不到“开放现有”的推荐(我什至不确定这是我所追求的,说实话!)
  • 正确,因为存储库的信息存储在克隆内的 .git 目录中(在 svn 中,你会说工作副本),git 会在工作目录中查找这个 .git 目录(pwd )。我通常在 GNU/Linux 系统上执行此操作,但 MacOS 的行为方式应该相同。
猜你喜欢
  • 2015-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-22
  • 2018-02-24
  • 2020-02-17
  • 2020-10-13
  • 1970-01-01
相关资源
最近更新 更多