推送到远程服务器和Github
小结:我想在本地编辑文件,然后推送到Github和我的web服务器 我把两个遥控器都安装好了,所以现在我可以做到这一点;但是,我必须在本地签出分支A,在服务器上签出分支B。然后我必须使用SSH连接到服务器并签出分支A(我想要的分支)。我真的不想或不需要第二个分支,但许多帖子建议您不能或不应该推进到非裸存储库。一定有更好的办法。即使只是使用rsync也比这容易(我做了一段时间) 奇怪的是,这在Github上从未发生过。几乎我所有的回购协议都只有一个分支,我从来没有收到过这样的警告推送到远程服务器和Github,git,Git,小结:我想在本地编辑文件,然后推送到Github和我的web服务器 我把两个遥控器都安装好了,所以现在我可以做到这一点;但是,我必须在本地签出分支A,在服务器上签出分支B。然后我必须使用SSH连接到服务器并签出分支A(我想要的分支)。我真的不想或不需要第二个分支,但许多帖子建议您不能或不应该推进到非裸存储库。一定有更好的办法。即使只是使用rsync也比这容易(我做了一段时间) 奇怪的是,这在Github上从未发生过。几乎我所有的回购协议都只有一个分支,我从来没有收到过这样的警告 警告消息说您可以
警告消息说您可以将
receive.denyCurrentBranch
设置为忽略,但我不知道它有多安全/正常。我希望有人能理解我的模糊描述(这是因为我对git的了解有限),并知道最佳解决方案。在web服务器上的裸机回购上设置post接收挂钩会更容易。这样,这个钩子可以:
- 更改目录并将新更改拉入实际的非裸回购
- 签出您想要的分支
(注意:有趣的事实,你可以)我花了一分钟的时间来消化:
/var/www/www.example.org
是服务器上的实际站点目录,post receive
文件位于服务器上的裸repo中(必须是不同的目录),要推送到的URL是裸repo。我在问之前读过你提到的指南。当site.git dir没有我的任何文件时,我感到困惑,但我想我现在明白它是如何工作的了。谢谢
$ 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