【问题标题】:Setting up a git repo on my GoDaddy hosting plan在我的 GoDaddy 托管计划上设置 git 存储库
【发布时间】:2010-11-03 11:37:01
【问题描述】:

我有一个使用 git 进行版本控制的项目。

我想要做的是在我的(启用 ssh 的)GoDaddy 共享主机包上设置一个存储库,以便我可以通过推送而不是在 FTP 中拖放来部署。

任何提示将不胜感激。最好是已经做过的人的帐户,但我个人在网上找不到任何帐户。

【问题讨论】:

  • 作为参考,我放弃了这个,从slicehost得到了一个VPS。
  • 更新:最新版本的godaddy共享主机现在默认安装了git。

标签: git


【解决方案1】:

我必须在http://netgonian.com(GoDaddy 经销商)托管的 VPS 上设置 git。耗时 3 小时的事情本可以在 15 分钟内完成,而且超级简单。

安装 git 应该像运行 yum install git 一样简单,但不幸的是尝试这给了我各种找不到文件的错误。以下是最终解决方案。

步骤如下:

  1. SSH 到您的虚拟服务器
  2. 使用命令su -切换到root用户
  3. 按照此处的说明操作至create a new centos-base.repo file
  4. 在您刚刚创建上述文件的同一目录中 (/etc/yum.repos.d) 将文件 CentoOS-Base.repo 重命名为 CentOS-Base.repox
  5. 现在您可以运行yum install git,它会运行。

基本问题是 yum 的所有基本 url 都指向 secureserver.net 上的某个服务器,该服务器缺少所有需要的文件。我们上面所做的是将基本 url 指向具有所需文件的服务器。

【讨论】:

    【解决方案2】:

    通过一些工作,我能够在我的 GoDaddy 帐户上运行 Git。在my blog 上有更长的帖子详细说明了该过程,但简短的回答是:

    1. 在您的帐户中安装 git(可能使用我的博文中引用的 tarball)
    2. 在您的帐户中创建一个 git 存储库(裸机或非裸机)
    3. 检查您的存储库,使用 -u 指示 git-upload-pack 的路径

      % git clone -u libexec/git-core/git-upload-pack mysite:myrepo.git

    4. 调整您的本地存储库配置以指向 git-upload-pack 的正确路径和 git-receive-pack:

      % git config remote.origin.receivepack libexec/git-core/git-receive-pack
      % git config remote.origin.uploadpack libexec/git-core/git-upload-pack


    由于无法再访问该博客,以下是从archive.org 提取的完整帖子:

    在 GoDaddy 上使用 Git

    此博客托管在廉价的 GoDaddy 帐户上。当最近可以通过 SSH 访问 shell 时,我认为安装本地 git 存储库会很有趣。这不是微不足道的,但我终于让它工作了。我是这样做的:

    步骤 0. 配置 SSH

    您想创建一个公钥,以便您可以轻松地通过 SSH 访问您的 GoDaddy 帐户。如果您还没有密钥对,请创建一个密钥对,并将其添加到 ~/.ssh/authorized_keys。我假设~/.ssh/config 中的条目是这样的:

    Host mysite
    HostName mygodaddysite.com
    User mylogin
    

    步骤 1. 安装 Git

    在我的 GoDaddy 主机上闲逛之后,我发现它运行的是 CentOS 5.2。在我的笔记本电脑上运行的二进制文件不兼容,所以我使用 VirtualBox 设置本地 Centos 5.2 安装并构建 Git。我正在共享一个包含pre-built CentOS 5.2 Git binaries 的压缩包。您应该可以使用以下命令下载和安装:

    wget http://johntrammell.com/centos5.2-git.tar.gz
    tar xzf centos5.2-git.tar.gz
    

    享受这部分 - 我在这里为您节省了几个小时的工作。

    第 2 步。设置您的环境。

    将以下内容添加到您的 .bash_profile:

    export EDITOR=vim
    export PATH=$PATH:$HOME/bin:$HOME/libexec/git-core
    export LD_LIBRARY_PATH=$HOME/lib
    export GIT_EXEC_PATH=~/libexec/git-core
    export GIT_TEMPLATE_DIR=~/share/git-core/templates
    

    这将在交互式 shell 上正确设置您的环境。不幸的是,我似乎无法为非交互式 SSH 命令正确设置 PATH。例如,当我从笔记本电脑运行此命令时:

    ssh mysite env
    

    我看到了默认路径。当我在.bashrc 中设置路径时也是这种情况。我还没有确切地找到 SSH 在非交互式访问中的作用,但这可能与 sshd 中的 PermitUserEnvironment 设置有关。幸运的是,我们可以解决这个问题。

    步骤 3. 创建存储库

    登录您的 GoDaddy 帐户,并创建一个简单的“裸”Git 存储库:

    % mkdir myrepo
    % cd myrepo
    % touch README
    % git init
    % git add README
    % git commit -m 'empty git repository'
    % cd ..
    % git clone --bare myrepo myrepo.git
    

    您现在在您的 GoDaddy 帐户根目录中的 ~/myrepo.git/ 中拥有一个裸存储库。

    第 4 步。检查您的存储库

    唯一棘手的部分是你必须告诉 git 在哪里可以找到 git-upload-pack。这可以解决上面提到的 PATH 问题。在您的本地计算机上,执行以下操作:

    git clone -u libexec/git-core/git-upload-pack mysite:myrepo.git
    

    您现在应该已检出原始最小存储库的副本。

    第 5 步。更多 git 配置调整

    遗憾的是,我们还没有完成:

    % cd myrepo
    % echo "foo" > README
    % git commit -am 'updated'
    [master 044c086] updated
     1 files changed, 1 insertions(+), 0 deletions(-)
    % git push
    bash: git-receive-pack: command not found
    fatal: The remote end hung up unexpectedly
    

    我们的 PATH 问题现在正在干扰推送操作。作为一种变通方法,我们可以在命令行中指定--receive-pack,或者在本地配置中设置(同样适用于获取操作和--upload-pack):

    % git config remote.origin.receivepack libexec/git-core/git-receive-pack
    % git config remote.origin.uploadpack libexec/git-core/git-upload-pack
    

    恭喜,您现在应该可以运行了!

    资源

    【讨论】:

    【解决方案3】:

    我在 http://www.612softwarefoundry.com/getting-git-on-godaddy/ 找到了另一个在 GoDaddy 上安装 git 的有用指南

    【讨论】:

      【解决方案4】:

      这篇博文中的说明对我有用,除了我必须访问 EPEL 并找到最新版本的 git RPM:http://hire.chrisjlee.net/node/139

      获取二进制文件

      cd ~
      mkdir git
      cd git
      # Download the rpm from EPEL ( http://fedoraproject.org/wiki/EPEL )
      # Find the latest version by checking http://dl.fedoraproject.org/pub/epel/5/i386/
      wget http://dl.fedoraproject.org/pub/epel/5/i386/git-1.8.2.1-1.el5.i386.rpm
      # Extract binaries from the rpm
      rpm2cpio git-1.7.4.1-1.el5.i386.rpm  | cpio -imdv
      rm git-1.7.4.1-1.el5.i386.rpm
      

      配置

      echo "
      export GIT_BIN=${HOME}/git
      export PATH=${GIT_BIN}/usr/bin:${PATH}
      export GIT_EXEC_PATH=${GIT_BIN}/usr/bin
      export GIT_TEMPLATE_DIR=${GIT_BIN}/usr/share/git-core/templates
      export GIT_SSL_NO_VERIFY=true" >> ~/.bashrc
      

      配置 git

      mkdir ~/.git
      git config --local --add remote.origin.uploadpack ~/git/usr/bin/git-upload-pack
      git config --local --add remote.origin.receivepack ~/git/usr/bin/git-receive-pack
      

      【讨论】:

      • 如果 .bashrc 文件在登录时没有运行(因为它不适合我),然后运行 ​​source ~/.bashrc
      【解决方案5】:

      有一个 YouTube 教程解释了如何在 Godaddy 共享主机帐户上设置 Git。链接在这里: http://youtu.be/z60GLfsGGsY

      还有一个网页,其中包含您需要在视频上执行的命令。这是页面地址: http://www.drupalfever.com/linux-how-to/git/set-up-git-in-a-godaddy-shared-hosting-account

      如果您有任何问题,请给我留言或建议。

      【讨论】:

        【解决方案6】:

        通过 ssh 连接。

        安装 git 到 ~/git。

        之后创建/更新这些文件:

        ~/.ssh/authorized_keys

        command="~/connect.sh" ssh-rsa AAAAB3NzaC...
        

        ~/connect.sh

        #!/bin/bash
        if [ -f "${HOME}/.env_profile" ]; then
                source ~/.env_profile
        fi;
        
        if [ "x${SSH_ORIGINAL_COMMAND}x" == "xx" ]; then
                $SHELL --login
        else
                eval "${SSH_ORIGINAL_COMMAND}"
        fi;
        

        ~/.env_profile

        export ENV_VARIABLE=value
        

        通过 git:

        export PATH=$PATH:$HOME/bin:$HOME/git/libexec/git-core
        export LD_LIBRARY_PATH=$HOME/git/lib
        export GIT_EXEC_PATH=~/git/libexec/git-core
        export GIT_TEMPLATE_DIR=~/git/share/git-core/templates
        

        我花了大约一个星期的时间在谷歌上搜索了这个,但它现在就像魅力一样工作......我认为 godaddy 帐户没有其他解决方案,可能性太有限了......

        【讨论】:

        • 我使用了类似的东西,现在 git 就像一个魅力,但我仍然无法将 github 中的东西克隆到 godaddys 帐户中。任何提示? ssh 没有执行权限:(
        • 我从来没有从 github 克隆过。也许它不使用你本地的 ssh 来克隆。
        【解决方案7】:

        我按照这里的指示成功了:

        http://www.krizka.net/2010/12/30/setting-up-a-public-git-repository-with-godaddy-shared-hosting/

        钥匙(对我来说)是

        • 获取 CentOS 的预编译二进制文件(来自上面帖子中的链接)
        • 设置“uploadpack”和“receivepack”。这是文章末尾附近“让本地 git 了解远程 git”部分中的第 1 步。

        【讨论】:

        • 这是一个很好的描述,但该网站不再可用。
        • 不幸 - 也许有人可以从互联网时间机器中挖掘出来?
        【解决方案8】:

        我在本地维护 git 并使用 scp 来推送直播...它并不优雅,但是 godaddy 已经安装了我默认的 scp。

        "scp -r fooDirectory user@host.com:/path/to/document/root/"

        这会将本地目录“fooDirectory”移动到远程主机上的“/path/to/document/root/fooDirectory”。

        当你登录 go daddy 时使用“pwd”

        【讨论】:

          【解决方案9】:

          首先,您需要在 GoDaddy 上安装 git。我不确定这是否可能。 Git 支持本地用户安装,但您需要有一些方便的开发工具才能做到这一点。下载git,看看你能不能./configure && make && make install——如果能,它会把它放到你的~/bin目录中。

          我们广泛使用 git 来控制生产。但是,与其在推送上进行部署,我是否可以建议您 ssh 到盒子并执行 git pull

          更具体地说,创建一个“发布”分支,然后当您准备好部署时,只需将您的更改合并到发布分支,ssh 到服务器,然后 git pull。

          例如

          ssh user@godaddyhost.com
          cd /path/to/project
          
          #ok, assuming you are on the Release branch
          git fetch
          git merge branch-with-new-changes-on-it
          
          # update the remote Release branch with the merge
          git push origin HEAD
          

          这个简单的工作流程让开发人员可以随时准确地查看生产服务器上的内容,并在请求部署之前将其他更改与他们的更改合并。事实上,我们要求在请求部署您的分支之前完全合并所有生产更改。

          --

          如果您确实设法在 GoDaddy 上安装了 git,并且您真的想在推送到它时自动部署,那么请查看 post-update 挂钩。

          http://git-scm.com/docs/githooks

          --

          如果您无法在 GoDaddy 上安装 git,请查看它们是否支持 rsync。然后你可以在某个地方有一个简单的 bash 脚本

          1. 拉动您的更改
          2. rsync 到 godaddy

          --

          有很多方法可以做到这一点。也许这会对方向有所帮助......

          【讨论】:

            猜你喜欢
            • 2015-11-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-06-08
            • 1970-01-01
            • 2012-12-10
            • 1970-01-01
            • 2017-12-29
            相关资源
            最近更新 更多