gpt4 book ai didi

linux - Git推送到cPanel帐户-推送未更新修改的文​​件

转载 作者:太空狗 更新时间:2023-10-29 11:18:47 25 4
gpt4 key购买 nike

解决方案-如何使用git推送到cpanel服务器
我终于可以在本地主机(Windows 8.1上的WAMP设置)和Linux服务器(带有cPanel 11.46.2的CentOS 6.6 x64)之间设置Git了。
我在本地创建了一个裸克隆:git clone --bare my_project my_project.git注意:my_project是一个示例名称,而不是真实名称,来自此文档:http://git-scm.com/book/en/v2/Git-on-the-Server-Getting-Git-on-a-Server
我将my_project.git文件夹复制到服务器的根目录/home/myuser/public_html/
所以现在在根目录中,我有:

  • cgi-bin
  • my_project.git

  • 这是我不确定的 Realm 。我是否必须在public_html目录中的服务器上进行初始化(使用腻子)?我读了一些关于裸初始化的东西?我只想(从PC上)将已经在Git控制下的网站推送到服务器。当我对1个文件进行更改时,将该更改推送到服务器,以便通过推送实时更新。该网站已完成,可以投入使用。我已经手动来回移动以便在服务器上进行实时测试。我的最后一步是正确设置Git,因此任何进一步的更改都可以将它们推送到服务器,而无需FTP。
    我添加了一个远程来源: git remote add origin ssh://myuser@thedomain.com/home/myuser/public_html/my_project.git我试图 push 它,并得到“权限被拒绝(公钥)”。我已经在本地PC上拥有id_rsa和id_rsa.pub密钥,因此我将它们复制并重命名为id_rsa.myname id_rsa.myname.pub(其中myname是我的名字)。然后,我通过FTP(以cpanel用户的身份使用FTP,并将其复制到.ssh文件夹)复制到.ssh文件夹中,该目录是转储到public_html上方的目录,与/home/myuser/.ssh/目录相同。
    将它们放置到那里后,我使用通过以cpanel用户(我的私有(private)ppk)身份登录的Putty将它们添加到“authorized_keys”中,方法是:
    cd .ssh
    cat id_rsa.myname >> ~/.ssh/authorized_keys
    cat id_rsa.myname.pub >> ~/.ssh/authorized_keys
    完成此操作后,似乎可以进行推送了。因为我遇到了密钥/身份验证问题,所以我使用了Git Gui版本,该版本已安装并且在本地运行良好。我通过Git Bash添加了起源。当我在Gui版本中执行“Remote> Push”时,我得到了:
    Pushing to ssh://theregistrybank@theregistrybank.com/home/theregistrybank/public_html/yiire    gistrybank.git
    stdin: is not a tty
    To ssh://myuser@thedomain.com/home/myuser/public_html/my_project.git
    44ae034..0388a05 master -> master
    updating local tracking ref 'refs/remotes/origin/master'
    在执行推送之前,唯一修改过的文件(与我转移到服务器的裸克隆不同)是我的.gitignore文件。我添加了2个排除项,并在本地提交。所以我试图在该文件中推送更改。在我进行推送后,它以绿色显示“成功”,并且似乎可以正常工作。但是,当我在FileZilla中检查文件时,.gitignore文件不是我刚刚在本地提交的更新文件。
    我想我很近,但是错过了某个地方。我试图尽可能地描述自己。
    并且将源代码放置在GitHub上不是一种选择,因为客户端不希望源代码公开,也不想为私有(private)存储库付费。我应该能够从本地设置推送到cPanel服务器,因此不必每次都传输数千个文件。我实际上传输了一个zip文件,然后在服务器上将其解压缩。

    服务器信息
  • cPanel 11.46.2 build 0
  • CentOS 6.6 x86_64 kvm build01

  • 是的,已经在服务器上安装了Git,并且可以正常工作,并且git --version报告:git版本1.7.1
    我PC上的Git:git版本1.9.4.msysgit.2
    先感谢您。


    感谢@VonC我能够使它工作:)
    您需要在某个地方放置git repo。我在“/home/cpaneluser/git-repos”中创建了一个“git-repos”文件夹,以存放该cpanel用户的存储库。
    第一步是创建裸仓库: http://git-scm.com/book/en/v2/Git-on-the-Server-Getting-Git-on-a-Server-我只遵循了第一步,基本上创建了裸仓库'my-project.git'
    在将其放置在服务器上之前,将“my-project.git/hooks/post-receive.sample”重命名为“post-receive”,以便将其运行。使用您的编辑器进行编辑,并在其选择的答案中添加@VonC给我们的行:
    #!/bin/sh
    umask 0022
    GIT_WORK_TREE=/home/cpaneluser/public_html GIT_DIR=/home/cpaneluser/git-repos/my-project.git git checkout -f
    注意:我使用的是cpanel,因此您的路径可能不同,而您的umask也可能不同。 0022用于0644文件权限。没有umask,我将收到500个内部服务器错误,因为这些文件是使用0664权限创建的。
    使用FTP或任何您喜欢的方法,将“my-project.git”裸仓库复制到服务器上的“/home/cpaneluser/git-repos”。然后进入“my-project.git/hooks”并将接收后的权限更改为具有执行权限。对我来说,0744效果很好。这是神奇的调味料:)
    在本地,添加远程(必须在git项目中):git remote set-url origin ssh://cpaneluser@yourdomain.com/home/cpaneluser/git-repos/my-project.git
    现在,如果您尝试立即推送,则不会将文件放在“public_html”中,因为git树(术语?)匹配并且是最新的。如果它们是最新的,则似乎跳过了执行“接收后”钩子(Hook)的过程。这意味着您的bash脚本永远不会运行,也永远不会将文件 check out 到工作树中。
    我们需要手动运行“post-receive” bash脚本,以在“public_html”目录中创建项目的所有文件。
    cd到'/home/cpaneluser/git-repos/my-project.git/hooks'
    运行: ./post-receiveoom,您所有的文件都在“public_html”中。现在您可以在本地工作,然后按预期推送到您的cpanel服务器:)

    最佳答案

    复制的内容(my_project.git)是一个裸仓库,意味着没有工作树(实际 checkout 的文件)。
    例如读取“Git workflow - Setting up a build process”。

    这意味着要推送至/home/myuser/public_html/

    缺少的部分是post-receive hook(在/home/myuser/public_html/my_project.git/hooks/post-receive中,确保它是可执行的:chmod +x),以便 check out /home/myuser/public_html/中的存储库。

    #!/bin/sh
    GIT_WORK_TREE=/home/myuser/public_html GIT_DIR=/home/myuser/public_html/my_project.git git checkout -f

    关于linux - Git推送到cPanel帐户-推送未更新修改的文​​件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27978317/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com