推送到远程服务器和Github
问题描述:
摘要:我想在本地编辑文件,然后推送到Github和我的Web服务器。推送到远程服务器和Github
我有两个遥控器设置没有问题,所以现在我有点能够做到这一点;但是,我必须在本地检出分支A,并在服务器上分支B.然后我必须SSH进入服务器,并检查分支A(我想要的)。我真的不想要或不需要第二个分支,但很多帖子都建议你不能或不应该推送到非裸仓库。一定会有更好的办法。即使只是使用rsync会比这更容易(我做了一段时间)。
奇怪的是,这从来没有发生在Github上。几乎我所有的回购协议都只有一个分支,我从来没有收到过这个警告。
警告消息说你可以设置receive.denyCurrentBranch
忽略,但我不知道它有多安全/理智。我希望有人能够理解我的模糊描述(这是由于我对git的了解有限),并且知道最佳解决方案。
答
在Web服务器上设置一个裸露的回购站的后接收挂钩会更容易。
这样,这个钩子可以:
- 更改目录并拉动实际非裸露回购
- 结帐你想
请参阅“Git Post-Receive Hook for Website Staging”分支和工作的新变化在 “Using Git to manage a web site”:
$ mkdir /var/www/www.example.org
$ cat > hooks/post-receive
#!/bin/sh
GIT_WORK_TREE=/var/www/www.example.org git checkout -f
$ chmod +x hooks/post-receive
(注:有趣的事实,你可以push to two different remote repos simultaneously)
花了我一分钟的时间来消化:'/ var/www/www.example.org'是服务器上的实际站点目录,'post-receive'文件放在服务器上的裸回购(必须是一个不同的目录),并推送到的URL是裸露的回购。我实际上在阅读之前提到的那个指南。当site.git目录没有我的任何文件时,我感到困惑,但我想我现在理解它的工作原理。谢谢。 – Daniel