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

韦德

下面的解决方案-如何使用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 -服务器

我将my_project.git文件夹复制到服务器的根目录/ home / myuser / public_html /

所以现在在根目录中,我有:

  • 吉宾
  • my_project.git

这是我不确定的领域。我是否必须在public_html目录中的服务器上进行初始化(使用腻子)?我读了一些关于裸初始化的东西?我只想(从PC上)将已经在Git控制下的网站推送到服务器。当我对1个文件进行更改时,将该更改推送到服务器,以便通过推送实时更新。该网站已完成,可以投入使用。我已经手动来回移动以便在服务器上进行实时测试。我的最后一步是正确设置Git,因此任何进一步的更改都可以将它们推送到服务器,而无需FTP。

我添加了一个远程来源: git remote add origin ssh://[email protected]/home/myuser/public_html/my_project.git

我试图推动它,并得到“权限被拒绝(公钥)”。我已经在本地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用户(我的私人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://[email protected]/home/theregistrybank/public_html/yiire    gistrybank.git
stdin: is not a tty
To ssh://[email protected]/home/myuser/public_html/my_project.git
44ae034..0388a05  master -> master
updating local tracking ref 'refs/remotes/origin/master'

在执行推送之前,唯一修改过的文件(与我转移到服务器的裸克隆不同)是我的.gitignore文件。我添加了2个排除项,并在本地提交。所以我试图在该文件中推送更改。在我进行推送后,它以绿色显示“成功”,并且似乎可以正常工作。但是,当我在FileZilla中检查文件时,.gitignore文件不是我刚刚在本地提交的更新文件。

我想我很近,但是错过了某个地方。我试图尽可能地描述自己。

并且将源代码放置在GitHub上不是一种选择,因为客户端不希望源代码公开,也不想为私有存储库付费。我应该能够从本地设置推送到cPanel服务器,因此不必每次都传输数千个文件。我实际上传输了一个zip文件,并在服务器上将其解压缩。


服务器信息

  • cPanel 11.46.2内部版本0
  • CentOS 6.6 x86_64平方米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://[email protected]/home/cpaneluser/git-repos/my-project.git

现在,如果您尝试立即推送,则不会将文件放在“ public_html”中,因为git树(术语?)匹配并且是最新的。如果它们是最新的,则似乎跳过了执行“接收后”钩子的过程。这意味着您的bash脚本永远不会运行,也永远不会将文件检出到工作树中。

我们需要手动运行“ post-receive” bash脚本,以在“ public_html”目录中创建项目的所有文件。

cd到'/home/cpaneluser/git-repos/my-project.git/hooks'

跑: ./post-receive

oom,您所有的文件都在“ public_html”中。现在您可以在本地工作,然后按预期推送到您的cpanel服务器:)

您复制的(my_project.git)是一个裸仓库,意味着没有工作树(实际签出的文件)。
阅读例如“ Git工作流程-设置构建过程”。

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

缺少的部分是接收后挂钩(在中/home/myuser/public_html/my_project.git/hooks/post-receive,确保它是可执行chmod +x的:),以便在中签出回购/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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

推送到CF后git未更新

来自分类Dev

Git推送多个帐户

来自分类Dev

Git-文件夹未推送到仓库

来自分类Dev

git子模块未推送到生产

来自分类Dev

Heroku如何仅允许我的git帐户推送到其创建的git遥控器?

来自分类Dev

首次推送到github repo生成了765个未跟踪或已修改的文件

来自分类Dev

推送到Gerrit时使用LDAP帐户

来自分类Dev

如何使用多个帐户推送到gitlab?

来自分类Dev

如何使用git从PC推送到多个GitHub帐户?(不同的存储库)

来自分类Dev

为什么我的 git 不会推送到我的 github 帐户?

来自分类Dev

Git推送到选定的分支

来自分类Dev

将文件更新推送到 GitHub

来自分类Dev

如何将更改从GitHub Desktop推送到Cpanel

来自分类Dev

Git尝试推送未跟踪的文件

来自分类Dev

将工作空间中的已修改文件推送到Github

来自分类Dev

如何将文件推送到git存储库而不推送到Heroku?

来自分类Dev

Git无法推送链接到旧帐户

来自分类Dev

正在创建文件,但数据未推送到文件中

来自分类Dev

Git Repo限制文件名被推送到GitHub

来自分类Dev

仅将一个文件推送到GIT

来自分类Dev

在git仓库的子文件夹上推送到远程源?

来自分类Dev

推送到git repo时应该忽略.obj文件吗?

来自分类Dev

由于二进制文件,无法推送到Git

来自分类Dev

推送到git时忽略文件夹

来自分类Dev

Git Repo限制文件名不被推送到GitHub

来自分类Dev

jwt config秘密文件推送到git上

来自分类Dev

Git提交未推送

来自分类Dev

Git恢复推送到上一个推送

来自分类Dev

git rebase后如何推送到远程?