Jak zmienić git na SSH, a nie https dla nowych repozytoriów
W dzisiejszych czasach kiedy tworzę nowe repozytorium na Githubie na stronie setup dostaję:
git remote add origin https://github.com/nikhilbhardwaj/abc.git
git push -u origin master
I za każdym razem, gdy muszę wcisnąć commit, muszę podać moją nazwę Użytkownika i hasło na Githubie.
Mogę ręcznie zmienić to na
[email protected]:nikhilbhardwaj/abc.git
W .git/config
. Uważam to za dość irytujące - czy jest jakiś sposób, aby skonfigurować git do używania SSH domyślnie?
5 answers
Ustawianie gałęzi origin repozytorium na SSH
Strona konfiguracji repozytorium GitHub jest tylko sugerowaną listą poleceń (i GitHub sugeruje teraz używanie protokołu HTTPS). Jeśli nie masz dostępu administracyjnego do strony Githuba, nie znam żadnego sposobu na zmianę sugerowanych poleceń.
Jeśli wolisz używać protokołu SSH, po prostu dodaj zdalną gałąź w ten sposób (tzn. użyj tej komendy zamiast sugerowanej komendy Githuba). Aby zmodyfikować istniejącą gałąź, zobacz następna sekcja.
$ git remote add origin [email protected]:nikhilbhardwaj/abc.git
Modyfikuj istniejące repozytorium
Jak już wiesz, aby przełączyć istniejące repozytorium na SSH zamiast HTTPS, możesz zmienić zdalny adres url w pliku .git/config
.
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
-url = https://github.com/nikhilbhardwaj/abc.git
+url = [email protected]:nikhilbhardwaj/abc.git
Skrótem jest użycie polecenia set-url
:
$ git remote set-url origin [email protected]:nikhilbhardwaj/abc.git
Więcej informacji o SSH-HTTPS switch
- "dlaczego Git zawsze pyta o moje hasło?" - Strona pomocy GitHub.
- Przełącznik Githuba na Smarta HTTP - istotne pytanie o StackOverflow
-
-Blog GitHub o HTTPS i jak uniknąć ponownego wpisywania hasła]}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:43
-
GitHub
git config --global url.ssh://[email protected]/.insteadOf https://github.com/
-
BitBucket
git config --global url.ssh://[email protected]/.insteadOf https://bitbucket.org/
To mówi gitowi, aby zawsze używał SSH zamiast HTTPS podczas łączenia się z GitHub / BitBucket, więc domyślnie uwierzytelniasz się za pomocą certyfikatu, zamiast monitu o hasło.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-14 21:57:28
Trevor nie jest w stanie tego zrobić.
Ale oto co możesz bezpośrednio dodać w swoim .gitconfig
:
# Enforce SSH
[url "ssh://[email protected]/"]
insteadOf = https://github.com/
[url "ssh://[email protected]/"]
insteadOf = https://gitlab.com/
[url "ssh://[email protected]/"]
insteadOf = https://bitbucket.org/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:33:25
Jeśli chcesz mieć wiele kluczy dla różnych hostów, zrób to:
Tworzenie skryptu
#!/usr/bin/env bash
email="$1"
hostname="$2"
hostalias="$hostname"
keypath="$HOME/.ssh/${hostname}_rsa"
ssh-keygen -t rsa -C $email -f $keypath
if [ $? -eq 0 ]; then
cat >> ~/.ssh/config <<EOF
Host $hostalias
Hostname $hostname
User git
IdentitiesOnly yes
IdentityFile $keypath
EOF
fi
I uruchom go jak
sh script.sh [email protected] github.com
Zmień zdalny adres url
git remote set-url origin [email protected]:user/foo.git
Dodaj zawartość~/. SSH / github.com_rsa. Pub do kluczy ssh na github.com
Sprawdź połączenie
ssh -T [email protected]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-26 10:15:42
Upewnij się, że podczas klonowania kopiujesz łącze ssh zamiast łącza https. To jest sposób PEBCAK, aby zapewnić to domyślne;)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-26 21:42:55