SSH経由でGitリポジトリをフォルダーにプッシュするにはどうすればよいですか?


53

私はgit initgit commit -aなどを実行した my-projectというフォルダーを持っています。

ここで、リモートサーバーの/ 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リポジトリを初期化する必要がないように、これが機能するようにしたいのですが、それを行う必要がありますか?私はまったく正しい道を進んでいますか?

ありがとう。

回答:


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接続を介してそれを行うことはできません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.