Pet*_*tah 50 git deployment push git-push git-remote
我们有一个网站,其所有PHP/HTML/JS/CSS/etc文件都存储在Git存储库中.
我们目前有3种类型的计算机(或用例)用于存储库.
所以目前我们:
local: git push origin master
local: password: ********
local: ssh admin@webserver.com
webserver: password: ********
webserver: cd ~/domain.com/
webserver: git pull origin master
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:有没有办法从我的本地电脑直接推送到网络服务器?
即.
local: git push origin master
local: password: ********
local: git push webserver master
local: password: ********
Run Code Online (Sandbox Code Playgroud)
ral*_*nja 37
是的,您可以直接推送到您的网络服务器,但我不推荐它,因为您应该只推送使用--bare参数克隆的存储库.我利用git hook系统让主存储库自动更新Web服务器上的repo.查看更新后的挂钩:
http://git-scm.com/docs/githooks
该脚本可以通过ssh登录到Web服务器并执行
cd ~/domain.com/
git checkout master
git pull origin master
Run Code Online (Sandbox Code Playgroud)
这样,您只需要专注于推送到中央服务器而不必关心Web服务器,一旦推送完成,它将始终更新.如果你可以自动化某些东西,那么自动化:)
我甚至为你找到了一篇很好的文章,通过脚本中的ssh登录(如果必须使用密码,如果设置了ssh-key,这是微不足道的):
http://bash.cyberciti.biz/security/expect-ssh-login-script/
希望这可以帮助!
ale*_*emb 29
我有同样的问题,并且不满意当前最高投票的答案,最后关注git-website-howto,它很好地概述了这个过程,并且IMO是一个更清洁,更快捷的方法.
TL; DR,git init --bare在您的Web服务器上创建一个新的仓库,您可以从您的开发机器中推送您的更改.当Web回购收到您的更改时,它会触发post-receive挂钩,然后将文件复制到您的Web根目录.
我喜欢这种方法,因为后接收挂钩可以在您的服务器上完成工作,因此您的本地计算机可以更快地推送并释放自己.这也使得为特定分支设置远程跟踪变得非常容易.因此,您可以让一个分支调用production来更新您的Web服务器,而您的主人继续进行开发并链接到其他地方的git repo.
注意:您需要git config receive.denycurrentbranch ignore在Web服务器repo上运行以在推送时禁止在本地开发框上发出警告.
Tim*_*han 10
查看http://www.kernel.org/pub/software/scm/git/docs/v1.6.0.6/git-push.html的git urls部分
所以你会尝试:
git push ssh://admin@webserver.com/~admin/domain.com/ master
Run Code Online (Sandbox Code Playgroud)
补充:我认为您要求的部分内容是如何拥有多个远程存储库.
git remote add webserver ssh://admin@webserver.com/~admin/domain.com/
Run Code Online (Sandbox Code Playgroud)
允许你运行:
git push origin master
git push webserver master
Run Code Online (Sandbox Code Playgroud)