2

我在共享托管服务器上设置了一个 repo。从现在开始,我想使用 git 将我的本地更改直接推送到我的共享主机,但是尽管有 ok 消息,我仍然看不到文件中的任何更改:

在共享主机上(远程服务器)

初始化 git 仓库

cd public_html/.git
git init
git add .
git commit -m 'First commit'

在我的笔记本电脑上(本地服务器)

我将它克隆到本地机器上的中央远程仓库

git clone ssh://me@mdomain.ro:15554/home/mydomain/public_html/.git

现在我有一个远程存储库的工作副本,我只有一个名为“master”的分支。我能看到它:

git branch

我在名称“origin”下添加远程存储库:

git remote add origin ssh://me@mdomain.ro:15554/home/mydomain/public_html/.git

我可以列出远程存储库:

git remote

将显示: origin 在这个阶段我已经完成了我的工作,再次提交我的更改(如上) 现在我将更改推送回我的主存储库所在的远程服务器。

git push origin master

在共享主机上(远程服务器)

我设法通过将远程存储库转换为裸存储库来实现它:

git config --bool core.bare true

在我的笔记本电脑上(本地服务器)

我再次推送数据:

git push origin master

并得到

Compressing objects: 100% (30/30), done.
Writing objects: 100% (32/32), 663.98 KiB, done.
Total 32 (delta 21), reused 0 (delta 0)
To ssh://me@mdomain.ro:15554/home/mdomain.ropublic_html/.git
   a416e72..bb19005  master -> master

但是,在浏览器中访问我的网址时,我仍然看不到更改。怎么了?

4

3 回答 3

3

错误消息非常清楚,表明服务器无法更新当前签出分支的工作树(master)。

要解决此问题,您可以研究如何将服务器的存储库转换为裸存储库

另一种选择(尽管我强烈建议不要这样做)是receive.denyCurrentBranch在服务器 repo 的 git 配置中设置为ignoreor warnor false

如果您要做的是git push用作在服务器上部署新代码的一种方式,并且即使只有一个裸仓库,您也需要拥有一个工作树,您可以查看我一段时间前发布的这个答案,详细说明如何在服务器上签出单独的工作树并设置接收后挂钩,该挂钩负责从裸仓库更新此工作树。

于 2013-04-01T21:13:04.127 回答
0

要让 git repo 承认push它必须配置为bare.

裸存储库仅包含版本信息。工作文件不存在。相反,它包含文件夹的全部内容.git

您在“服务器”中将存储库创建为非裸存储库,因此您无法推送。如果您刚刚开始,只需再次创建它,git --bare init但如果您已经进行了重要更改,则需要转换它

于 2013-04-01T21:18:38.213 回答
0

此方法适用于 git 自托管或共享主机...(不是 github 主机或私有 repo)

从您的 win 或其他操作系统的 git Bash 开始的第一步:

git push -u origin master

[origin]你是<alias>远程吗

在您的托管服务器中(共享或任何支持git和的服务器SSH

git log --oneline 

您会看到您从客户端 git Bash 推送的最后一次提交。例如,您会看到如下内容:

6d523ed modify last commit
37b624b .gitignore is now working
f1e0413 add *.zip to ignore file
c5r0d74 add .gitignore
4e87i69 Installing

注意:上面的代码是我的提交。你承诺是不同的。

现在,您必须使用git reset将您在本地计算机上的最后一次提交共享到您的 public_html 或您在托管服务器上初始化 git 的任何地方。

git reset --hard 6d523ed

注意:6d523edSHA-1最后一个Commit,您可以在上面看到文本。

重要提示:我测试了近 100000 种从本地计算机直接共享(git 裸机)到远程主机(public_html)的方式,但它不起作用......!!!!

它可能在 GitHub 中工作,但其他托管服务器在不使用的情况下无法进行任何更改reset --hard

于 2017-05-29T10:10:58.303 回答