Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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
将Git Repo推送到远程服务器_Git_Ssh - Fatal编程技术网

将Git Repo推送到远程服务器

将Git Repo推送到远程服务器,git,ssh,Git,Ssh,因此,我尝试将repo从本地主机推送到VPS 我在vps上设置了一个--bare repo,在本地主机上设置了一个repo 我已使用以下命令推送到VPS: # git remote add origin ssh://root@mysite.net/home/mysite/public_html/mygit/.git # git push origin master 它推送成功,但我需要能够做的是签出VPS.git中的文件。但是,当我尝试运行“git checkout”时,我得到了一个错误: 致

因此,我尝试将repo从本地主机推送到VPS

我在vps上设置了一个--bare repo,在本地主机上设置了一个repo

我已使用以下命令推送到VPS:

# git remote add origin ssh://root@mysite.net/home/mysite/public_html/mygit/.git
# git push origin master
它推送成功,但我需要能够做的是签出VPS.git中的文件。但是,当我尝试运行“git checkout”时,我得到了一个错误:

致命:此操作必须在工作树中运行

我已尝试编辑.git配置文件并编辑/添加以下行:

[core]
bare = true
worktree = /home/mysite/public_html/mygit/

[receive]
denycurrentbranch = false
这允许我运行git命令,但文件不会签出,git告诉我文件已被删除


我只是有点困惑。我应该怎么做呢?

尝试在一个空存储库上执行签出是不合逻辑的-
签出
是一个用于更新工作副本/目录树的命令:

git签出-签出到工作树的分支或路径

裸存储库没有工作树

以正常方式设置git回购 因此,从零开始,假设您使用的是家庭/办公室计算机:

创建裸回购 为您的项目创建裸回购协议-或将现有回购协议移动到适当的位置:

ssh root@mysite.net
cd repos
mkdir repo.git ##give it a better name
cd repo.git
git init --bare
为您的站点创建克隆 创建本地克隆 自动更新站点 因为您的目标是自动更新,所以无论何时推送到repo,您都可以使用git钩子更新作为您的实时站点的工作副本

这是:

将其另存为
/home/root/repos/.git/hooks/post receive
,使其可执行,并且每次推送时,它都会尝试通过发出拉操作来更新您的实时站点

或 您可以放弃使用裸存储库,而使用live站点的签出作为主/唯一存储库。这是不推荐的,但如果您选择这样做,您会:

git remote add live root@mysite.net:/home/mysite/public_html/.git
git push live master
它将为您提供一个关于更新当前签出分支的错误,阅读警告并理解其含义。如果您决定仍要这样做,您可以允许它使用:

ssh root@mysite.net
cd /home/mysite/public_html
git config receive.denyCurrentBranch ignore

再次不推荐使用,最好使用裸回购并作为正常签出维护您的实时站点。

您是在克隆上运行这些命令,还是在裸回购上运行这些命令?我是在我的VPS上的裸回购上运行这些命令。感谢您的详细回复。我现在就要开始了。好吧,我已经开始工作了,从我的本地服务器到我的服务器。现在,如何从服务器上的repo签出文件?我在尝试推送时收到以下消息:stdin:不是tty/root/。bashrc:第13行:导出:`PATH/root/local/bin:/usr/local/jdk/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin':不是有效的标识符最新的一切听起来都像是您的做一些非常奇怪的事情-注意错误来自
.bashrc
文件,看起来与您的问题无关。如果您需要实际帮助,我建议您在freenode上使用SO chat或#git。@AD7six我在VPS上有node.js应用程序。我是否使用这些相同的命令从github自动更新我的节点应用程序?因此,public_html my.git文件的intead位于/root/mynodeproject/.git中。我需要做什么改变才能使我的东西正常工作?
#!/bin/sh
cd /home/mysite/public_html
git --git-dir /home/mysite/public_html/.git pull > /dev/null
git remote add live root@mysite.net:/home/mysite/public_html/.git
git push live master
ssh root@mysite.net
cd /home/mysite/public_html
git config receive.denyCurrentBranch ignore