2010-05-11 28 views

Trả lời

64

Bạn cần phải sử dụng một git + ssh URL để thực hiện nhân bản Git:

git clone git+ssh://[email protected]/~/working 

Để phá vỡ nó xuống:

  • git+ssh nói với Git mà bạn muốn sử dụng ssh để kết nối với Kho lưu trữ Git.
  • hap là tên người dùng của bạn (tôi giả sử dựa trên thư mục chính trong câu hỏi của bạn).
  • 192.168.1.2 là máy tính mà bạn muốn kết nối với
  • ~/working là đường dẫn đến kho Git của bạn trên máy từ xa (vì vậy ~ là thư mục chính của bạn)

Một số điều khác cần lưu ý:

  • Bạn cần bật máy chủ ssh trên máy có kho Git
  • Bạn cần biết mật khẩu cho người dùng hap
+6

Tôi không nghĩ rằng 'git + ssh: //' là cần thiết. Bạn có thể chỉ cần sử dụng '[email protected]: ~/working'. Ngoài ra nhân bản trực tiếp từ một thư mục làm việc thiết lập các bản sao lên để đẩy vào repo làm việc, mà nên tránh. – bames53

+2

Điều này có thể hữu ích, ví dụ nếu bạn đang làm việc trên máy X không thể truy cập repo từ xa nhưng có thể truy cập vào máy cục bộ khác có quyền truy cập từ xa. Trong trường hợp của tôi tôi đang sử dụng này, nơi tôi phát triển trên một máy linux không có quyền truy cập vào vpn cần thiết để đi thẳng đến điều khiển từ xa. –

+0

Có dễ dàng sao chép bằng chứng chỉ không? –

2

Tôi giả định rằng trên cả hai máy bạn đã cài đặt Git.

Bây giờ việc bạn làm phụ thuộc vào dịch vụ bạn đã cài đặt, đó là cách bạn có thể kết nối từ máy này sang máy khác.

Trường hợp đơn giản nhất là khi bạn có sshd chạy trên máy bạn muốn nhân bản từ, và bạn có thể ssh từ máy bạn muốn nhân bản - vào máy bạn muốn sao chép từ.

Nếu bạn có thể làm

ssh 192.168.1.2 

(hoặc nếu bạn có tên khác nhau trên máy khác, ssh [email protected]), sau đó bạn sẽ có thể sao chép thông qua SSH, như Josiah wrote:

git clone git+ssh://[email protected]/~/working 

Nếu bạn muốn tiếp tục tìm nạp/đẩy giữa các máy, bạn nên cấu hình xác thực khoá công khai cho SSH, để không phải cung cấp mật khẩu trên mỗi lần tìm nạp.


Nếu bạn không có cài đặt sshd trên máy nguồn, bạn có thể sao chép sử dụng giao thức HTTP "thông minh" nếu bạn có một máy chủ web cài đặt và có thể cài đặt các script CGI (xem git-http-backend manpage), hoặc bạn có thể sao chép bằng giao thức HTTP "câm" nếu bạn đã cài đặt máy chủ web nhưng chỉ có thể phục vụ tệp tĩnh (bạn cần chạy git update-server-info trong kho lưu trữ nguồn trước) hoặc bạn có thể sao chép bằng cách sử dụng rsync nếu bạn đã cài đặt.

Như một phương sách cuối cùng, bạn có thể sử dụng "git bundle" để tạo lưu trữ mà bạn có thể di chuyển, ví dụ, sử dụng USB pendrive và sao chép từ nó.

0

Tôi nghĩ mọi người đang tìm kiếm câu trả lời này. Lệnh sau trong terminal wil đăng nhập vào máy chủ và sao chép một repo hiện có. Trong vị trí đường dẫn hiện tại của thiết bị đầu cuối (vì vậy, trước tiên hãy cd đến vị trí ưu tiên).

sudo git clone [email protected]:/home/path/to/repo.git 

Trong trường hợp hiện tại bạn không phải là địa chỉ IP. Sử dụng ping để xác định ip của máy chủ của bạn. Sau khi địa chỉ IP không quên sử dụng : và sau đó viết đường dẫn tuyệt đối.

+0

Tại sao 'sudo', tại sao máy chủ? op hỏi cụ thể giữa hai hệ thống trên một mạng, được cho là để tiết kiệm băng thông ... điều này không phải ở tất cả các câu trả lời câu hỏi và là đồng bằng không chính xác. – thecarpy

+0

@thecarpy bạn đúng khi tôi đọc lại nó có rất ít để làm với câu hỏi chính xác. – Michiel

+0

Đừng sao chép dưới dạng gốc (với 'sudo'), tất cả các tệp trong git sẽ được sở hữu bởi root ... – thecarpy

Các vấn đề liên quan