Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
推送到远程服务器和Github_Git - Fatal编程技术网

推送到远程服务器和Github

推送到远程服务器和Github,git,Git,小结:我想在本地编辑文件,然后推送到Github和我的web服务器 我把两个遥控器都安装好了,所以现在我可以做到这一点;但是,我必须在本地签出分支A,在服务器上签出分支B。然后我必须使用SSH连接到服务器并签出分支A(我想要的分支)。我真的不想或不需要第二个分支,但许多帖子建议您不能或不应该推进到非裸存储库。一定有更好的办法。即使只是使用rsync也比这容易(我做了一段时间) 奇怪的是,这在Github上从未发生过。几乎我所有的回购协议都只有一个分支,我从来没有收到过这样的警告 警告消息说您可以

小结:我想在本地编辑文件,然后推送到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