2013-08-02 33 views
45

Github thực sự muốn chúng tôi sử dụng giao thức HTTPS để sử dụng Gists, ví dụ: họ chỉ liệt kê url HTTPS trên trang Gist - ví dụ: https://gist.github.com/donatello/5834862Làm thế nào để sao chép Github Gist qua giao thức SSH?

Có thể sao chép Gist bằng giao thức SSH không?

+0

gì sai với https? ;) –

+3

Dường như yêu cầu tôi chỉ định tên người dùng và mật khẩu trên dòng lệnh mỗi khi tôi sử dụng giao thức. Nó hoạt động tốt với SSH cho tôi (không cần phải chỉ định tên người dùng/mật khẩu mỗi lần) – donatello

+2

Ngoài ra, HTTPS auth trở nên phức tạp hơn nếu bạn bật xác thực 2 yếu tố. –

Trả lời

79

Vâng, nó có thể:

git clone [email protected]:5834862.git 

Chỉ cần thay thế với riêng bạn Gist ID của khóa học.

+0

đó là SSH, chứ không phải git: // –

+0

Xin lỗi, đã chỉnh sửa câu hỏi để khắc phục. – donatello

+1

Bạn có nhiều khả năng sẽ muốn cũng chuyển tên gist trên dòng lệnh: git clone [email protected]: 5834862.git gist_name –

12

https://help.github.com/articles/which-remote-url-should-i-use#ssh-readwrite---gitgithubspanspancom

git @ ..... là giao thức ssh

khi bạn sao chép url clone cho một ý chính nó cho bạn thấy url https bản sao

https://gist.github.com/5834862.git

thay đổi https:// đến [email protected]/****.git tới :****.git

như vậy trong trường hợp này

git clone [email protected]:5834862.git

+0

Điều này, đã làm việc hoàn hảo trong một github repo trong nhà – crsuarezf

2

Nếu bạn muốn, bạn có thể lấy this kịch bản và đặt nó ở đâu đó trong $PATH của bạn. Khi đã xong, bạn có thể làm như sau:

  1. Clone bất kỳ ý chính từ gist.github.com sử dụng HTTPS (hoặc nếu bạn có một ý chính đã nhân bản vô tính, chỉ cần tiến hành bước tiếp theo)
  2. Anywhere trong thư mục git của ý chính cây, hãy chạy lệnh
git-change-url --to-ssh 

Bây giờ, với điều kiện là khóa công khai của bạn được tải lên tài khoản github của bạn (nó sẽ được liệt kê here), bạn sẽ có thể làm việc với các ý chính qua SSH, wit hout phải nhập thông tin đăng nhập github của bạn.

Dễ xảy ra lỗi hơn nhiều so với chỉnh sửa tệp cấu hình git bằng tay.

Ps: Nếu bạn tìm thấy bất kỳ lỗi trong kịch bản, hoặc có bất cứ bổ sung vào thực hiện, cảm thấy tự do để ngã ba: D

+0

Không chính xác những gì op yêu cầu, nhưng vẫn hữu ích! Tôi không muốn sao chép kho lưu trữ hiện tại của mình để giải pháp này làm việc cho tôi. Tôi sẽ thêm 'nano $ (git rev-parse --git-dir)/config' làm phương án thay thế trực tiếp sửa đổi các mục nhập. Vì vậy, câu trả lời sẽ được tự chứa hơn;). Nếu không, trước tiên bạn phải tải xuống một tập lệnh và kiểm tra xem nó có thể gây hại cho hệ thống của bạn hay không. –

0

Thay đổi https:// để ssh://[email protected] nên làm các trick, nghĩa là, thay đổi

https://gist.github.com/donatello/5834862 

để

ssh://[email protected]/donatello/5834862 

nên git clone ssh://[email protected]/... nên sao chép dự án (nếu bạn đã thêm chìa khóa SSH trên Github)

Theo ý kiến ​​cá nhân của tôi, official document không rõ ràng về SSH.

+1

Hiện tại https hoạt động cả khi có và không có tên người dùng nhưng chỉ SSH không có tên người dùng, ví dụ: 'ssh: // git @ gist.github.com/5834862'. –

7

Các thả xuống trên trang ý chính hiện nay có Nhúng/Chia sẻ/Clone HTTPS/Clone tùy chọn SSH:
gist dropdown
mà hiển thị các trick không rõ ràng được bỏ qua tên người dùng:

  • Clone HTTPS:
    https://gist.github.com/b6f4a53fac485f75afb9150d03efb2f6.git
    trình đối với tôi có hoặc không có .git, và có hoặc không có tên người dùng: https://gist.github.com/cben/b6f4a53fac485f75afb9150d03efb2f6 (như thường lệ trên github, thứ e URL duyệt kinh điển làm việc cho git quá)

  • Clone SSH:
    [email protected]:b6f4a53fac485f75afb9150d03efb2f6.git
    AKA
    ssh://[email protected]/b6f4a53fac485f75afb9150d03efb2f6.git
    trình đối với tôi có hoặc không có .git, nhưng không hoạt động với tên người dùng.


tôi kích hoạt github 2FA mà làm cho HTTPS đau đớn vì vậy tôi luôn muốn SSH; các ~/.gitconfig sau hiện các dịch cho tất cả các GIST trên push:

[url "ssh://[email protected]/"] 
    # In case I just copy-pasted with username: 
    # [only works for my (cben) gists, but those are the ones I can push] 
    pushInsteadOf = https://gist.github.com/cben/ 
    # For gists cloned with official no-username URL: 
    pushInsteadOf = https://gist.github.com/ 

Và đối với thường (không phải ý chính) Repos:

[url "ssh://[email protected]/"] 
    pushInsteadOf = https://github.com/ 
Các vấn đề liên quan