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

ric*_*ich 62 git

我有一个名为 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
Run Code Online (Sandbox Code Playgroud)

这似乎不正确(我认为源会在目的地之前出现)并且失败了:

fatal: '/mnt/boxee/git/midwinter-physiotherapy.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

我希望这样工作,这样我就不必每次都访问远程主机并手动初始化 Git 存储库……我必须这样做吗?我真的走对了路线吗?

谢谢。

use*_*686 64

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

ssh user@host "git init --bare /mnt/foo/bar/my-project.git"
Run Code Online (Sandbox Code Playgroud)

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


Kyl*_*dha 16

如果你想同时推送到 repo并在服务器上更新文件,你可以创建一个服务器端 git hook 来在推送后签出文件。在服务器端 git/hooks/目录中创建一个名为的文件post-receive并添加以下代码(更新目录以匹配您的文件夹结构):

#!/bin/sh
git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f
Run Code Online (Sandbox Code Playgroud)

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

更多信息和详细解释在这里: https : //www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps


小智 5

对我来说,我必须使用ssh://user@host:/mnt/foo/bar/my-project(注意:主机后面的,并.git在最后删除)。

所以我可以使用以下方法克隆存储库:

git clone ssh://user@host:/mnt/foo/bar/my-project
Run Code Online (Sandbox Code Playgroud)

我们还可以注意到,格式类似于使用scp命令。