git成功地将更改推送到主存储库,但仍然看不到文件中的更改

时间:2013-04-01 21:03:13

标签: git

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

共享主机(远程服务器)

初始化git repo

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

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

3 个答案:

答案 0 :(得分:2)

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

要解决此问题,您可以查看how to convert your server's repo to a bare repo

另一个选项(尽管我强烈建议不要这样做)是将服务器repo的git配置中的receive.denyCurrentBranch设置为ignorewarnfalse

如果你要做的是使用git push作为在服务器上部署新代码的方法,并且你需要有一个工作树,即使是一个裸仓库,你可以看看{ {3}}回答我发布了一些时间,详细说明了如何在服务器上签出单独的工作树并设置一个post-receive挂钩,负责从裸仓库更新这个工作树。

答案 1 :(得分:0)

要让git repo承认push,必须将其配置为bare

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

您在'服务器'中创建了您的存储库。作为非裸存储库,所以你不能推。如果您刚开始使用git --bare init再次创建它,但如果您已经进行了重要更改,则需要将其转换为

答案 2 :(得分:0)

此方法适用于git自托管或共享主机...(isn' t github主机或私有存储库)

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

git push -u origin master

[origin]您是<alias>远程

在您托管服务器(共享或支持gitSSH的任何服务器)

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 bare)到远程主服务器(public_html),但它无法工作...... !!!!

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