【问题标题】:Set up Git to manage remote website设置 Git 来管理远程网站
【发布时间】:2018-12-28 06:00:44
【问题描述】:

我一直在尝试设置 Git 来管理我的网站,正如 this tutorialthis onethis onethis onethis gist 所解释的那样。

总结一下我所做的:(深入的解释可以在教程中找到)

  1. /home/usr/mysite.git/ 的 Web 服务器上设置一个裸 git 存储库
  2. 在裸仓库中,创建一个可执行的 post-receive 挂钩,并将 GIT_WORK_TREE 设置为我的 Web 文档根目录 /home/www/mysite.com/
  3. 在我的本地 git 存储库中,添加远程存储库。这是来自我的.git/config

    [remote "live"]
    url = ssh://user@ssh.myserver.com/home/usr/mysite.git
    fetch = +refs/heads/*:refs/remotes/live/*
    
  4. 推送:git push live +master:refs/heads/master

这是我得到的输出:

Everything up-to-date

太棒了!
除非它不是:我的远程 Web 文档根 /home/www/mysite.com/ 仍然为空
我已尽我所能,但无法将文件推送到我的远程文件夹中。

你知道我做错了什么,或者我可以做些什么来调试它?

【问题讨论】:

  • 在推送之前您是否在 Git 中提交了更改?
  • 我有!感谢您确定:)

标签: git githooks git-remote git-bare


【解决方案1】:

回购实际上可能是最新的。通过在您的服务器上运行 git show 来验证这一点。 相反,也许您的 post-receive 钩子实际上并未执行。如果是这样,可能是因为它没有设置为可执行文件?

【讨论】:

  • 我的钩子是可执行的,ls -l-rwxrwxr-x(与所有其他钩子相同的权限和所有者-me-)。我注意到一个奇怪的事情是所有其他的钩子都被命名为hook-name.sample。我创建的是简单的post-receive。这可能是相关的吗?
  • 至于我的裸仓库中的git show,它返回我最后一次提交。颜色为绿色。这是否意味着它是最新的?那为什么我的 GIT_WORK_TREE 文件夹(我的网站根目录)仍然是空的?
  • 检查钩子脚本是否实际执行。通过手动运行脚本来测试它。或者在钩子脚本中添加一行否则会显示(如touch do-you-see-me)。如果没有,请检查是否为您的钩子脚本设置了可执行位。
  • 我上周很忙,今天才再次查看我的问题。我按照您的建议添加了touch 行,不知何故,现在推送起作用了!我不确定是什么解决了它,但是非常感谢您的帮助 Lutz!
【解决方案2】:

您的.git/config 应在[remote "live"] 部分中包含以push 开头的行。否则,它仅配置为从该远程获取。

【讨论】:

  • 你能具体告诉我我应该在.git/config 中添加什么吗? push = +master:refs/heads/master 之类的东西?我似乎在网上找不到任何这样的例子。谢谢!
  • 我编辑了我的 .git/config。 git push 仍然返回Everything up-to-date
【解决方案3】:

试试GIT_WORK_TREE 而不是GIT_WORKING_TREE

【讨论】:

  • 谢谢卢茨!我只是加倍检查,实际上已经有了 GIT_WORK_TREE。我一定打错了我的问题! (我编辑了它)任何其他想法可能是错的吗?
猜你喜欢
  • 1970-01-01
  • 2013-07-13
  • 2021-12-31
  • 1970-01-01
  • 2013-01-07
  • 2012-03-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-07
相关资源
最近更新 更多