推送到远程服务器和Github

5
摘要:我想在本地编辑文件,然后将其推送到Github和我的Web服务器上。我已经设置了两个远程库,所以现在我基本上能做到这一点;但是,我必须在本地检出分支A,在服务器上检出分支B。然后,我必须通过SSH登录到服务器并检出我想要的分支A。我真的不想要或需要第二个分支,但许多帖子建议您不能或不应该将内容推送到非裸存储库。一定有更好的方法。即使只使用rsync,也比这更容易(而且我这样做了一段时间)。奇怪的是,这在Github上从未发生过。几乎所有我的版本库都只有一个分支,我从未收到过此警告消息。警告消息说可以将receive.denyCurrentBranch设置为忽略,但我不知道它是否安全/明智。我希望有人能理解我的含糊描述(由于我对git的知识有限),并知道最佳解决方案。
1个回答

4

在您的Web服务器上设置裸仓库的后接收挂钩会更容易。

这样,此挂钩可以:

  • 更改目录并将新更改拉到实际的非裸仓库
  • 检出所需分支

请参见“Git用于网站暂存的后接收挂钩”和“使用Git管理网站”中的工作:

$ 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接