如何通过SSH将Git存储库推送到文件夹?


53

我有一个名为my-project的文件夹,在其中完成了git initgit commit -a等。

现在,我想将其推送到远程服务器上/ mnt / foo / bar的空文件夹中。

我怎样才能做到这一点?

根据阅读内容,我确实尝试过:

cd my-project
git remote add origin ssh://user@host/mnt/foo/bar/my-project.git
git push origin master

这似乎不对(我认为源将在目标之前)并且失败了:

fatal: '/mnt/boxee/git/midwinter-physiotherapy.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

我希望这样做,这样我就不必每次都访问远程主机并手动启动Git存储库...我必须这样做吗?我完全走对了吗?

谢谢。

Answers:


56

命令正确;但是,远程地址也必须指向初始化的Git存储库。不过,这是一次工作。

ssh user@host "git init --bare /mnt/foo/bar/my-project.git"

(在Git中,“裸”存储库是没有工作树的存储库。)


11

如果您既要推送到仓库,又要在服务器上更新文件,则可以创建服务器端git钩子,以在推送文件后签出文件。在服务器端git /hooks/目录中,创建一个名为的文件,post-receive并添加以下代码(更新目录以匹配您的文件夹结构):

#!/bin/sh
git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f

然后使用授予文件适当的权限 chmod +x post-receive

此处提供更多信息和详细说明: https : //www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps


2

如果您不想在服务器上手动创建存储库,则可以安装gitosis,它将自动执行该过程。但是您必须在服务器上进行一些处理才能创建存储库-您无法通过客户端的git ssh连接来执行此操作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.