Làm cách nào tôi có thể đẩy kho Git vào thư mục qua SSH?


53

Tôi có một thư mục có tên là dự án của tôi bên trong mà tôi đã thực hiện git init , git commit -a , v.v.

Bây giờ tôi muốn đẩy nó vào một thư mục trống tại / mnt / foo / bar trên một máy chủ từ xa.

Tôi có thể làm cái này như thế nào?

Tôi đã thử, dựa trên những gì tôi đã đọc:

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

điều đó có vẻ không đúng (tôi cho rằng nguồn sẽ đến trước đích) và nó đã thất bại:

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

Tôi muốn điều này hoạt động sao cho tôi không phải truy cập máy chủ từ xa và tự khởi tạo kho lưu trữ Git mỗi lần ... tôi có phải làm điều đó không? Tôi đang đi đúng tuyến đường phải không?

Cảm ơn.

Câu trả lời:


56

Lệnh này là chính xác; tuy nhiên, địa chỉ từ xa cũng phải trỏ đến kho lưu trữ Git khởi tạo. Đó là một công việc một lần, mặc dù.

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

(Trong Git, kho lưu trữ "trần" là kho không có cây hoạt động.)


11

Nếu bạn muốn đẩy cả repo và cập nhật tệp trên máy chủ , bạn có thể tạo một git hook phía máy chủ để kiểm tra các tệp sau khi chúng được đẩy. Trong thư mục git phía máy chủ , /hooks/tạo một tệp có tên post-receivevà thêm đoạn mã sau (cập nhật các thư mục để khớp với cấu trúc thư mục của bạn):

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

Sau đó cung cấp cho các quyền quyền tập tin bằng cách sử dụng chmod +x post-receive

Thêm thông tin và giải thích chi tiết tại đây: https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps


2

Nếu bạn không muốn tạo kho lưu trữ theo cách thủ công trên máy chủ, bạn có thể cài đặt gitosis , điều này sẽ tự động hóa quy trình. Nhưng bạn phải có một số quy trình trên máy chủ để tạo kho lưu trữ - bạn không thể thực hiện qua kết nối git ssh từ máy khách.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.