Bagaimana saya bisa mendorong repositori Git ke folder melalui SSH?

53

Saya memiliki folder bernama my-project di dalamnya yang telah saya lakukan git init , git commit -a , dll.

Sekarang saya ingin mendorongnya ke folder kosong di / mnt / foo / bar di server jauh.

Bagaimana saya bisa melakukan ini?

Saya mencoba, berdasarkan apa yang saya baca:

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

yang sepertinya tidak benar (saya anggap sumber akan datang sebelum tujuan) dan gagal:

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

Saya ingin ini berfungsi sehingga saya tidak perlu mengakses host jarak jauh dan secara manual setiap kali melakukan repositori Git ... apakah saya harus melakukan itu? Apakah saya menyusuri rute yang benar?

Terima kasih.

kaya
sumber

Jawaban:

56

Perintahnya benar; Namun, alamat jarak jauh harus menunjuk ke repositori Git yang diinisialisasi juga. Itu adalah pekerjaan satu kali.

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

(Dalam Git, repositori "telanjang" adalah repositori tanpa pohon yang berfungsi.)

grawity
sumber
11

Jika Anda ingin mendorong ke repo dan memperbarui file di server , Anda dapat membuat git hook sisi server untuk checkout file setelah mereka didorong. Dalam direktori git sisi server/hooks/ buat file bernama post-receivedan tambahkan kode berikut (memperbarui direktori agar sesuai dengan struktur folder Anda):

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

Kemudian berikan file izin yang tepat menggunakan chmod +x post-receive

Info lebih lanjut & penjelasan rinci di sini: https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps

Kyle Chadha
sumber
2

Jika Anda tidak ingin membuat repositori secara manual di server, Anda dapat menginstal gitosis , yang akan mengotomatiskan proses. Tetapi Anda harus memiliki beberapa proses pada server untuk membuat repositori - Anda tidak dapat melakukannya melalui koneksi git ssh dari klien.

Mike Scott
sumber