将Git Repo推送到远程服务器

Sne*_*sta 2 git ssh

所以我试图将我的本地主机的回购推送到我的VPS.

我在我的vps上设置了一个--bare repo,在我的localhost上设置了一个repo.

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

# git remote add origin ssh://root@mysite.net/home/mysite/public_html/mygit/.git
# git push origin master
Run Code Online (Sandbox Code Playgroud)

它推动成功,但我需要做的是检查VPS .git中的文件.但是,当我尝试运行'git checkout'时,我收到错误:

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

我已经尝试编辑.git配置文件并编辑/添加这些行:

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

[receive]
denycurrentbranch = false
Run Code Online (Sandbox Code Playgroud)

这允许我运行git命令,但文件不会签出,git告诉我文件已被删除.

我有点困惑.我该怎么办呢?

AD7*_*six 5

尝试在裸存储库上执行检出是非常不合逻辑的 - checkout是用于更新工作副本/树的命令:

git-checkout - 签出一个或多个工作树的路径

裸存储库没有工作树.

以正常方式设置你的git repos

所以从零开始,让我们假设你在你的家庭/办公室电脑上:

创建裸仓库

为您的项目创建一个裸仓库 - 或将您现有的仓库移动到适当的位置:

ssh root@mysite.net
cd repos
mkdir repo.git ##give it a better name
cd repo.git
git init --bare
Run Code Online (Sandbox Code Playgroud)

为您的网站制作克隆

ssh root@mysite.net
cd /home/mysite/public_html
git clone ~/repos/repo.git .
Run Code Online (Sandbox Code Playgroud)

创建一个本地克隆

cd mylocalsite/public_html
git clone root@mysite.net:repos/repo.git .
git push/pull etc.
Run Code Online (Sandbox Code Playgroud)

自动更新站点

由于您的目标是自动更新,因此无论何时推送到您的仓库,都可以使用git-hooks更新您的实时网站的工作副本.

这是一个简单的例子:

#!/bin/sh
cd /home/mysite/public_html
git --git-dir /home/mysite/public_html/.git pull > /dev/null
Run Code Online (Sandbox Code Playgroud)

将其保存为/home/root/repos/.git/hooks/post-receive,使其可执行,每次推送时,它都会尝试通过发送拉动来更新您的实时网站

要么

您可以放弃使用裸存储库并使用您的实时网站的结帐作为您的主要/唯一存储库.这是不建议,但如果你选择这样做,你会怎么做:

git remote add live root@mysite.net:/home/mysite/public_html/.git
git push live master
Run Code Online (Sandbox Code Playgroud)

它会给你一个关于更新当前签出分支的错误,阅读警告并理解它的含义.如果您决定仍想这样做,可以允许它使用:

ssh root@mysite.net
cd /home/mysite/public_html
git config receive.denyCurrentBranch ignore
Run Code Online (Sandbox Code Playgroud)

再次不推荐,更好的是拥有一个裸仓库并将您的实时网站维护为正常结账.