題 如何通過SSH將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

這似乎不正確(我假設源將在目的地之前來)並且它失敗了:

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

我希望這樣工作,以便我不必訪問遠程主機並每次手動初始化一個Git存儲庫...我必須這樣做嗎?我是否會走正確的路線?

謝謝。


49
2018-01-08 18:39


起源




答案:


命令是正確的;但是,遠程地址也必須指向初始化的Git存儲庫。不過,這是一次性的工作。

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

(在Git中,“裸”存儲庫是沒有工作樹的存儲庫。)


52
2018-01-08 20:02





如果你想要推送回購 並在服務器上更新文件,你可以創建一個服務器端的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


9
2018-01-08 19:20





如果您不想在服務器上手動創建存儲庫,則可以安裝 Gitosis的,這將自動化該過程。但是你必須在服務器上有一些進程來創建存儲庫 - 你不能通過客戶端的git ssh連接來完成它。


1
2018-01-08 19:09