Git推送到服务器
我们有一个网站,其所有的PHP/HTML/JS/CSS/etc文件存储在一个Git仓库。Git推送到服务器
我们目前有3种类型的计算机(或用例)用于存储库。
- 当地开发商:拉最新变化,修改,提交到本地回购,推到主服务器
- 主服务器:*存储库,所有的改变推送到主服务器
- Web服务器:变化部署网站
时,所以目前的主服务器上拉低我们:
local: git push origin master
local: password: ********
local: ssh [email protected]
webserver: password: ********
webserver: cd ~/domain.com/
webserver: git pull origin master
所以我的问题是:有没有一种方法可以从我的本地计算机上直接推送到Web服务器?
即。
local: git push origin master
local: password: ********
local: git push webserver master
local: password: ********
看git的URL的http://www.kernel.org/pub/software/scm/git/docs/v1.6.0.6/git-push.html
部分,所以你会尝试:
git push ssh://[email protected]/~admin/domain.com/ master
新增: 我想你问的部分是如何有多个远程仓库。
git remote add webserver ssh://[email protected]/~admin/domain.com/
,允许你运行:
git push origin master
git push webserver master
我认为你正在寻找的功能描述如下:http://debuggable.com/posts/git-tip-auto-update-working-tree-via-post-receive-hook:49551efe-6414-4e86-aec6-544f4834cda3
从local
您可以添加Web服务器为远程,就像你会做任何其他的:
git remote add webserver [email protected]:/path/to/repo.git/
# push only master branch by default
git config remote.webserver.push master
现在当你的阅读y以推你可以这样做:
git push webserver
是的,你可以直接推到你的网络服务器,但我不会推荐它,因为你只能推到与--bare参数克隆库。我会利用git hook系统让主存储库自动更新Web服务器上的repo。退房更新后钩:
http://git-scm.com/docs/githooks
此脚本可以依次登录到通过ssh网络服务器,并做
cd ~/domain.com/
git checkout master
git pull origin master
这样,你只需要专注于推动到*服务器并且不必关心网络服务器,一旦推送完成,它将一直更新。如果你可以自动化一些东西,然后自动化:)
我甚至找到了一篇关于通过ssh登录脚本的好文章(如果你必须使用密码,如果已经设置了ssh-key,这是微不足道的) :
http://bash.cyberciti.biz/security/expect-ssh-login-script/
希望这有助于!
我有相同的查询,并不满意当前最受赞赏的答案在这里结束了以下git-website-howto其中概述了过程相当好,是一个更清洁和更快的方法。
TL; DR,git init --bare
在您的Web服务器上创建一个新的回购站,您将从开发机器推送您的更改。当网络回购站收到您的更改时,它会触发接收后挂接,然后将这些文件复制到您的网站根目录。
我喜欢这种方式,因为post-receive hook可以在你的服务器上完成这项工作,所以你的本地机器可以更快速地完成自己的工作。这也使得为特定分支设置远程跟踪变得非常容易。因此,您可以让一个名为production
的分支更新您的Web服务器,而您的主控继续进行开发并连接到其他地方的git仓库。
注意:您需要在您的web服务器repo上运行git config receive.denycurrentbranch ignore
以在推送时禁止本地开发箱上的警告。
该howto工作伟大的我。因为我在服务器的一个目录中工作,而另一个需要在'post-receive'文件中sudo用户。 'sudo -u
在部署本地更改之前,请检查目标服务器上是否有任何更改。
添加到部署脚本,以确保一切都没有改变对服务器:如果有改动的文件,比分析git的状态更容易
$ git ls-files -dmo --exclude-standard
将是空
的[使用Git推部署项目可能重复](http://*.com/questions/279169/deploy-a-project-using-git-push)。远程机器上的一个很好的可能性是[git config receive.denyCurrentBranch updateInstead](http://*.com/a/28381235/895245)。 – 2015-02-07 11:14:50