2013-08-02 10 views
45

Wydaje się, że Github chce, abyśmy używali protokołu HTTPS do korzystania z Gists, na przykład wyświetlają tylko adres URL HTTPS na stronie Gist - np. https://gist.github.com/donatello/5834862Jak sklonować Github Gist za pomocą protokołu SSH?

Czy można klonować GIST za pomocą protokołu SSH?

+0

co jest nie tak z https? ;) –

+3

Wydaje się, że wymagam podania nazwy użytkownika i hasła w wierszu poleceń przy każdym użyciu protokołu. Dla mnie działa dobrze z SSH (nie trzeba podawać nazwy użytkownika/hasła za każdym razem) – donatello

+2

Ponadto, uwierzytelnianie HTTPS staje się trudniejsze, jeśli włączymy 2-czynnikowy auth. –

Odpowiedz

79

Tak, to jest możliwe:

git clone [email protected]:5834862.git 

Wystarczy zastąpić własnymi Gist ID oczywiście.

+0

to SSH, a nie git: // –

+0

Przepraszamy, edytowaliśmy pytanie do usunięcia. – donatello

+1

Najprawdopodobniej będziesz chciał również podać nazwę punktu kontrolnego: git clone [email protected]: 5834862.git gist_name –

2

Jeśli chcesz, możesz chwycić this skrypt i umieścić go gdzieś w $PATH. Gdy to zrobisz, możesz wykonać następujące czynności:

  1. Clone każdą istotę z gist.github.com użyciu HTTPS (lub jeśli masz już sklonowany sens, po prostu przejść do następnego kroku)
  2. Gdziekolwiek w katalogu git GIST za drzewo, uruchom polecenie
git-change-url --to-ssh 

teraz, pod warunkiem, że klucz publiczny zostanie dodane do konta github (powinno być wymienione here) powinien być w stanie pracować z GIST poprzez SSH, wit nie musisz wpisywać swoich danych logowania na github.

Znacznie mniej podatne na błędy, niż ręczne edytowanie plików konfiguracyjnych git.

Ps: Jeśli znajdziesz jakieś błędy w skrypcie, lub masz jakieś dodatki do marki, nie krępuj się widelec: D

+0

Nie dokładnie to, o co prosił, ale nadal przydatne! Nie chciałem klonować mojego istniejącego repozytorium, więc to rozwiązanie sprawdziło się. Dodałbym 'nano $ (git rev-parse - git-dir)/config' jako alternatywę do bezpośredniej modyfikacji wpisów ręcznie. Tak więc odpowiedź będzie bardziej samodzielna;). W przeciwnym razie najpierw musisz pobrać skrypt i sprawdzić, czy może on zaszkodzić twojemu systemowi i s.o. –

0

Zmień https:// do ssh://[email protected] powinno załatwić sprawę, to znaczy zmienić

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

do

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

tak git clone ssh://[email protected]/... należy sklonować projektu (jeśli już dodany klucz SSH na Github)

Według mojej osobistej opinii, official document jest niejasne na temat SSH.

+1

Obecnie https działa zarówno z nazwą użytkownika, jak i bez niego, ale z SSH tylko bez nazwy użytkownika, np. 'ssh: // git @ gist.github.com/ 5834862'. –

7

rozwijana na stronach GIST ma teraz Osadzanie/share/Clone HTTPS/Clone opcje ssh:
gist dropdown
które pokazują nieoczywiste Sztuką jest pominięcie Nick:

  • Clone https:
    https://gist.github.com/b6f4a53fac485f75afb9150d03efb2f6.git
    działa na mnie z lub bez .git oraz z lub bez Login: https://gist.github.com/cben/b6f4a53fac485f75afb9150d03efb2f6 (jak zwykle na github, th e przeglądanie kanoniczny URL pracuje git zbyt)

  • Clone SSH:
    [email protected]:b6f4a53fac485f75afb9150d03efb2f6.git
    AKA
    ssh://[email protected]/b6f4a53fac485f75afb9150d03efb2f6.git
    działa na mnie z lub bez .git, ale nie działa z nazwą użytkownika.


Włączyłem GitHub 2fa co sprawia, HTTPS bolesne więc zawsze chcą SSH; następujące ~/.gitconfig robi tłumaczenie wszystkich GIST na przycisku:

[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/ 

a dla zwykłych (nie-GIST) repo:

[url "ssh://[email protected]/"] 
    pushInsteadOf = https://github.com/ 
Powiązane problemy