½èÖúÉϴΡ°µô¿Ó¡±µÄ¾Àú£¬ÎÒ¶ÔGitȨÏÞУÑéµÄÁ½ÖÖ·½Ê½ÖØÍ·½øÐÐÁËÊáÀí£¬ÐγÉÁËÕâÆª×ܽá¼Ç¼¡£
ÔÚ±¾µØ¼ÆËã»úÓëGitHub£¨»òGitLab£©½øÐÐͨÐÅʱ£¬´«ÊäÖ÷Òª»ùÓÚÁ½ÖÖÐÒ飬HTTPSºÍSSH£¬¶ÔÓ¦µÄ²Ö¿âµØÖ·¾ÍÊÇHTTPS
URLsºÍSSH URLs¡£
Ê×ÏÈÐèҪǿµ÷µÄÊÇ£¬HTTPS URLsºÍSSH URLs¶ÔÓ¦µÄÊÇÁ½Ì×ÍêÈ«¶ÀÁ¢µÄȨÏÞУÑ鷽ʽ£¬Ö÷ÒªµÄÇø±ð¾ÍÊÇHTTPS
URLs²ÉÓÃÕ˺ÅÃÜÂë½øÐÐУÑ飬SSH URLs²ÉÓÃSSHÃØÔ¿¶Ô½øÐÐУÑ顣ƽʱʹÓõÄʱºòÎÒÃÇ¿ÉÒÔ¸ù¾Ýʵ¼ÊÇé¿ö£¬Ñ¡ÔñÒ»ÖÖ¼´¿É¡£
HTTPS URLs
GitHub¹Ù·½ÍƼö²ÉÓÃHTTPS URLsµÄ·½Ê½£¬ÒòΪ¸ÃÖÖ·½Ê½ÊÊÓÃÃæ¸ü¹ã£¨¼´Ê¹ÔÚÓзÀ»ðǽ»ò´úÀíµÄÇé¿öÏÂҲͬÑùÊÊÓã©£¬Ê¹Óøü·½±ã£¨ÅäÖøü¼òµ¥£©¡£
²ÉÓÃHTTPS URLsµØÖ·clone/fetch/pull/push²Ö¿âʱ£¬ÊÂÏÈÎÞÐè¶Ô±¾µØÏµÍ³½øÐÐÈκÎÅäÖã¬Ö»ÐèÒªÊäÈëGitHubµÄÕ˺źÍÃÜÂë¼´¿É¡£²»¹ýÈç¹ûÿ´Î¶¼ÒªÊÖ¶¯ÊäÈëÕ˺ÅÃÜÂ룬ҲÊÇÒ»¼þºÜ·±ËöµÄÊÂÇé¡£
ºÃÔÚÒѾÓжà¸ö»úÖÆ¿ÉÒÔÈòÙ×÷²»ÓÃÕâôÂé·³¡£
ÔÚMacϵͳÖУ¬ÔÚÆôÓÃKeychain»úÖÆµÄÇé¿öÏ£¬Ê×´ÎÊäÈëGitHubÕ˺ÅÃÜÂëºó£¬ÈÏÖ¤ÐÅÏ¢¾Í»á×Ô¶¯±£´æµ½ÏµÍ³µÄKeychainÖУ¬Ï´ÎÔٴηÃÎʲֿâʱ¾Í»á×Ô¶¯¶ÁÈ¡KeychainÖб£´æµÄÈÏÖ¤ÐÅÏ¢¡£
ÔÚ·ÇMacϵͳÖУ¬ËäȻûÓÐKeychain»úÖÆ£¬µ«ÊÇGitÌṩÁËcredential helper»úÖÆ£¬¿ÉÒÔ½«Õ˺ÅÃÜÂëÒÔcacheµÄÐÎʽÔÚÄÚ´æÖлº´æÒ»¶Îʱ¼ä£¨Ä¬ÈÏ15·ÖÖÓ£©£¬»òÕßÒÔÎļþµÄÐÎʽ´æ´¢ÆðÀ´£¨~/.git-credentials£©¡£µ±È»£¬MacϵͳÈç¹û²»ÆôÓÃKeychain»úÖÆ£¬Ò²¿ÉÒÔ²ÉÓÃÕâÖÖ·½Ê½¡£
# cache
credential in memory
$ git config --global credential.helper cache
# store credential in ~/.git-credential
$ git config --global credential.helper store
|
ÔÚcredential.helperÉèÖÃΪstoreµÄÇé¿öÏ£¬Ê×´ÎÊäÈëGitHubÕ˺ÅÃÜÂëºó£¬¾Í»á×Ô¶¯±£´æµ½~/.git-credentialsÎļþÖУ¬±£´æÐÎʽΪhttps://user:pass@github.com£»Ï´ÎÔٴηÃÎʲֿâʱ¾Í»á×Ô¶¯¶ÁÈ¡~/.git-credentialsÖб£´æµÄÈÏÖ¤ÐÅÏ¢¡£
ÁíÒ»¸öÐèҪ˵Ã÷µÄÇé¿öÊÇ£¬Èç¹ûÔÚGitHubÖпªÆôÁË2FA£¨two-factor authentication£©£¬ÄÇôÔÚ±¾µØÏµÍ³ÖÐÊäÈëGitHubÕ˺ÅÃÜÂëʱ£¬²»ÄÜÊäÈëÔʼµÄÃÜÂ루¼´GitHubÍøÕ¾µÄµÇ¼ÃÜÂ룩£¬¶øÊÇÐèÒªÊÂÏÈÔÚGitHubÍøÕ¾Öд´½¨Ò»¸öPersonal
access token£¬ºóÐøÔÚ·ÃÎÊ´úÂë²Ö¿âÐèÒª½øÐÐȨÏÞУÑéµÄʱºò£¬²ÉÓÃaccess token×÷ΪÃÜÂë½øÐÐÊäÈë¡£
SSH URLs
³ýÁËHTTPS URLs£¬»¹¿ÉÒÔ²ÉÓÃSSH URLsµÄ·½Ê½·ÃÎÊGitHub´úÂë²Ö¿â¡£
²ÉÓÃSSH URLs·½Ê½Ö®Ç°£¬ÐèÒªÏÈÔÚ±¾µØ¼ÆËã»úÖÐÉú³ÉSSH keypair£¨ÃØÔ¿¶Ô£¬°üÀ¨Ë½Ô¿ºÍ¹«Ô¿£©¡£Ä¬ÈÏÇé¿öÏ£¬Éú³ÉµÄÃØÔ¿Î»ÓÚ$HOME/.ssh/Ŀ¼ÖУ¬ÎļþÃû³Æ·Ö±ðΪid_rsaºÍid_rsa.pub£¬Í¨³£ÎÞÐèÐ޸쬱£³ÖĬÈϼ´¿É¡£²»¹ý£¬Èç¹ûһ̨¼ÆËã»úÖдæÔÚ¶à¸öÃØÔ¿¶Ô£¬¾ÍÐèÒªÐÞ¸ÄÃØÔ¿ÎļþÃû£¬Ãû³ÆÃ»ÓÐÇ¿ÖÆµÄÃüÃû¹æ·¶£¬±ãÓÚ×Ô¼º±æÊ¶¼´¿É¡£
ÈçÏÂÊÇ´´½¨ÃØÔ¿¶ÔµÄ¹ý³Ì¡£
? ssh-keygen -t rsa -b 4096 -C "mail@debugtalk.com" Generating public/private rsa key pair. Enter file in which to save the key (/Users/Leo/.ssh/id_rsa): /Users/Leo/.ssh/debugtalk_id_rsa Enter passphrase (empty for no passphrase): <myPassphrase> Enter same passphrase again: <myPassphrase> Your identification has been saved in /Users/Leo/.ssh/debugtalk_id_rsa. Your public key has been saved in /Users/Leo/.ssh/debugtalk_id_rsa.pub. The key fingerprint is: SHA256:jCyEEKjlCU1klROnuBg+UH08GJ1u252rQMADdD9kYMo mail@debugtalk.com The key's randomart image is: +---[RSA 4096]----+ |+*BoBO+. | |o=oO=** | |++E.*+o. | |+ooo +o+ | |.o. ..+oS. . | | . o. . o | | . . | | . . | | .. | +----[SHA256]-----+ |
ÔÚ´´½¨ÃØÔ¿µÄ¹ý³ÌÖУ¬ÏµÍ³»¹½¨Òé´´½¨Ò»¸öÃûΪpassphraseµÄ¶«Î÷£¬ÕâÊÇÓÃÀ´¸ÉÂïµÄÄØ£¿
Ê×ÏÈ£¬µ¥¶À²ÉÓÃÃÜÂë¿Ï¶¨ÊDz»¹»°²È«µÄ¡£Èç¹ûÃÜÂëÌ«¼òµ¥£¬ÄÇô¾ÍºÜÈÝÒ×±»±©Á¦ÆÆ½â£¬Èç¹ûÃÜÂëÌ«¸´ÔÓ£¬ÄÇôÓû§¾ÍºÜÄѼÇÒ䣬¼Ç¼µ½Ð¡±¾×ÓÀïÃæ¸ü²»°²È«¡£
Òò´Ë£¬SSH keysµ®ÉúÁË¡£SSHÃØÔ¿¶ÔµÄ¿É¿¿ÐԷdz£¸ß£¬±»±©Á¦ÆÆ½âµÄ¿ÉÄÜÐÔ»ù±¾Ã»ÓС£²»¹ý£¬ÕâÒªÇóÓû§·Ç³£½÷É÷µØ±£¹ÜºÃ˽Կ£¬Èç¹û±ðÈËʹÓÃÄãµÄ¼ÆËã»úʱ͵͵µØ½«ÄãµÄ˽Կ¿½×ßÁË£¬ÄÇô¾ÍºÃ±ÈÊDZðÈËÄõ½ÁËÄã¼ÒÀïµÄÔ¿³×£¬Ò²ÄÜËæÊ±´ò¿ªÄã¼ÒµÄÃÅ¡£
»ùÓÚÒÔÉÏÇé¿ö£¬½â¾ö°ì·¨¾ÍÊÇÔÚSSH keysÖ®ÍâÔÙÔö¼ÓÒ»¸öÃÜÂ룬¼´passphrase¡£Ö»ÓÐͬʱ¾ß±¸SSH
private keyºÍpassphraseµÄÇé¿öÏ£¬²ÅÄÜͨ¹ýSSHµÄȨÏÞУÑ飬Õâ¾Í´ó´óµØÔö¼ÓÁ˰²È«ÐÔ¡£µ±È»£¬Õâ¸öpassphraseÒ²²»ÊDZØÐëµÄ£¬ÔÚ´´½¨ÃØÔ¿¶ÔʱҲ¿ÉÒÔ²»ÉèÖÃpassphrase¡£
ÁíÍ⣬Èç¹ûÿ´ÎȨÏÞУÑéʱ¶¼ÒªÊäÈëpassphrase£¬ÕâÒ²ÊÇͦÂé·³µÄ¡£ºÃÔÚÎÒÃDz»ÓÃÔÙµ£ÐÄÕâ¸öÎÊÌ⣬ÒòΪssh-agent¿ÉÒÔ°ïÎÒÃǼÇסpassphrase£¬MacϵͳµÄKeychainÒ²¿ÉÒÔ¼Çסpassphrase£¬ÕâÑùÎÒÃÇÔÚͬһ̨¼ÆËã»úÖоͲ»ÓÃÖØÐÂÊäÈëÃÜÂëÁË¡£
ÃØÔ¿¶Ô´´½¨ºÃÒÔºó£¬Ë½Ô¿´æ·ÅÓÚ±¾µØ¼ÆËã»ú£¨~/.ssh/id_rsa£©£¬½«¹«Ô¿£¨~/.ssh/id_rsa.pub£©ÖеÄÄÚÈÝÌí¼ÓÖÁGitHubÕË»§¡£
# copy the contents of id_rsa.pub to the clipboard
? pbcopy < ~/.ssh/id_rsa.pub
# paste to GitHub
# Login GitHub, ¡¾Settings¡¿->¡¾SSH and GPG keys¡¿->¡¾New
SSH Key¡¿
|
²»¹ý£¬Èç¹û´Ëʱ¼ì²â±¾µØ¼ÆËã»úÓëGitHubµÄÁ¬½Ó״̬£¬»á·¢ÏÖϵͳÈÔÌáʾȨÏÞУÑéʧ°Ü¡£
? ssh -T git@github.com
Permission denied (publickey).
|
ÕâÊÇÒòΪÔÚ±¾µØ¼ÆËã»úÓëGitHub½¨Á¢Á¬½ÓµÄʱºò£¬Êµ¼ÊÉÏÊDZ¾»ú¼ÆËã»úµÄssh-agentÓëGitHub·þÎñÆ÷½øÐÐͨÐÅ¡£ËäÈ»±¾µØ¼ÆËã»úÓÐÁË˽Կ£¬µ«ÊÇssh-agent²¢²»ÖªµÀ˽Կ´æ´¢ÔÚÄĶù¡£Òò´Ë£¬ÒªÏëÕý³£Ê¹ÓÃÃØÔ¿¶Ô£¬ÐèÒªÏȽ«Ë½Ô¿¼ÓÈëµ½±¾µØ¼ÆËã»úµÄssh-agentÖУ¨Ìí¼Ó¹ý³ÌÖÐÐèÒªÊäÈëpassphrase£©¡£
# start ssh-agent in the background
? eval "$(ssh-agent -s)"
Agent pid 78370
? ssh-add ~/.ssh/id_rsa
Enter passphrase for /Users/Leo/.ssh/id_rsa: <myPassphrase>
Identity added: /Users/Leo/.ssh/id_rsa (/Users/Leo/.ssh/id_rsa)
|
Ìí¼ÓÍê³Éºó£¬¾Í¿ÉÒԲ鿴µ½µ±Ç°¼ÆËã»úÖд洢µÄÃÜÔ¿¡£
? ssh-add -l 4096 SHA256:xRg49AgTxxxxxxxx8q2SPPOfxxxxxxxxRlBY /Users/Leo/.ssh/id_rsa (RSA)
|
Ôٴμì²â±¾µØ¼ÆËã»úÓëGitHubµÄÁ¬½Ó״̬£¬Ð£Ñé¾ÍÕý³£Í¨¹ýÁË¡£
? ssh -T git@github.com Hi leolee! You've successfully authenticated, but GitHub does not provide shell access.
|
ºóÐøÔÙ½øÐÐclone/fetch/pull/push²Ù×÷ʱ£¬¾Í¿ÉÒÔÕý³£·ÃÎÊGitHub´úÂë²Ö¿âÁË£¬²¢ÇÒÒ²²»ÐèÒªÔÙÖØÐÂÊäÈëÕ˺ÅÃÜÂë¡£
¶øÇÒ£¬½«Ë½Ô¿¼ÓÈëssh-agentºó£¬¼´Ê¹É¾³ý˽ԿÎļþ£¬±¾µØ¼ÆËã»úÈÔ¿ÉÒÔÕý³£·ÃÎÊGitHub´úÂë²Ö¿â¡£
? rm -rf ~/.ssh ? ssh-add -l 4096 SHA256:xRg49AgTxxxxxxxx8q2SPPOfxxxxxxxxRlBY /Users/Leo/.ssh/id_rsa (RSA) ? ssh -T git@github.com The authenticity of host 'github.com (192.30.252.130)' can't be established. RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'github.com,192.30.252.130' (RSA) to the list of known hosts. Hi leolee! You've successfully authenticated, but GitHub does not provide shell access.
|
Ö»ÓÐÖ´ÐÐssh-add -D»òssh-add -d pub_keyÃüÁ½«Ë½Ô¿´Óssh-agentɾ³ýºó£¬ÈÏÖ¤ÐÅÏ¢²Å»áʧЧ¡£
? ssh-add -d ~/.ssh/id_rsa.pub Identity removed: /Users/Leo/.ssh/id_rsa.pub (mail@debugtalk.com) ? ssh-add -l The agent has no identities. ? ssh -T git@github.com Permission denied (publickey). |
ͬʱʹÓöà¸öGitHubÕ˺Å
ÊìϤÁËHTTPS URLsºÍSSH URLsÕâÁ½ÖÖУÑ鷽ʽ֮ºó£¬ÎÒÃÇÔÙÀ´¿´Ö®Ç°Óöµ½µÄÎÊÌâ¡£ÒªÏëÔÚһ̨¼ÆËã»úÉÏͬʱʹÓöà¸öGitHubÕ˺ŷÃÎʲ»Í¬µÄ²Ö¿â£¬ÐèÒªÔõô×öÄØ£¿
ΪÁ˸üºÃµØÑÝʾ£¬ÏÖ¼ÙÉèÓÐÁ½¸öGitHubÕ˺ţ¬debugtalkºÍleolee£¬ÔÚÁ½¸öÕ˺ÅÖи÷×ÔÓÐÒ»¸ö²Ö¿â£¬debugtalk/DroidMeterºÍDebugTalk/MobileStore£¨¹«Ë¾Ë½Óп⣩¡£
Ç°ÃæÒѾ˵¹ý£¬HTTPS URLsºÍSSH URLs¶ÔÓ¦×ÅÁ½Ì×¶ÀÁ¢µÄȨÏÞУÑ鷽ʽ£¬Òò´ËÕâÁ½Ì×·½Ê½Ó¦¸ÃÊǶ¼Äܵ¥¶ÀʵÏÖÎÒÃǵÄÐèÇóµÄ¡£
²»¹ýÔÚÏêϸ½²½âGitȨÏÞУÑéµÄÎÊÌâ֮ǰ£¬ÎÒÃÇÏÈÀ´»Ø¹ËÏÂGitÅäÖÃÎļþµÄÓÅÏȼ¶¡£
GitÅäÖô洢λÖü°ÆäÓÅÏȼ¶
Unix-likeϵͳÖУ¬±£´æGitÓû§ÐÅÏ¢µÄÖ÷ÒªÓÐ3¸öµØ·½£¨Macϵͳ¶àÒ»¸öKeychain£©£º
/etc/gitconfig£º´æ´¢µ±Ç°ÏµÍ³ËùÓÐÓû§µÄgitÅäÖÃÐÅÏ¢£¬Ê¹ÓôøÓÐ--systemÑ¡ÏîµÄgit
configʱ£¬ÅäÖÃÐÅÏ¢»áдÈë¸ÃÎļþ£»
~/.gitconfig»ò~/.config/git/config£º´æ´¢µ±Ç°Óû§µÄgitÅäÖÃÐÅÏ¢£¬Ê¹ÓôøÓÐ--globalÑ¡ÏîµÄgit
configʱ£¬ÅäÖÃÐÅÏ¢»áдÈë¸ÃÎļþ£»
Keychain Access£ºÔÚ¿ªÆôKeychain»úÖÆµÄÇé¿öÏ£¬½øÐÐȨÏÞУÑéºó»á×Ô¶¯½«Õ˺ÅÃÜÂë±£´æÖÁKeychain
Access¡£
²Ö¿âµÄGitĿ¼ÖеÄconfigÎļþ£¨¼´repo/.git/config£©£º´æ´¢µ±Ç°²Ö¿âµÄgitÅäÖÃÐÅÏ¢£¬ÔÚ²Ö¿âÖÐʹÓôøÓÐ--localÑ¡ÏîµÄgit
configʱ£¬ÅäÖÃÐÅÏ¢»áдÈë¸ÃÎļþ£»
ÔÚÓÅÏȼ¶·½Ã棬ÒÔÉÏ4¸öÅäÖÃÏîµÄÓÅÏȼ¶´ÓÉÏÍùÏÂÒÀ´ÎÉÏÉý£¬¼´repo/.git/configµÄÓÅÏȼ¶×î¸ß£¬È»ºóKeychain
Access»á¸²¸Ç~/.gitconfigÖеÄÅäÖã¬~/.gitconfig»á¸²¸Ç/etc/gitconfigÖеÄÅäÖá£
»ùÓÚSSHÐÒéʵÏÖ¶àÕ˺ʲ´æ
ÏÈÀ´¿´ÏÂÈçºÎ²ÉÓÃSSH URLsʵÏÖÎÒÃǵÄÐèÇó¡£
ÔÚ´¦Àí¶àÕ˺ʲ´æÎÊÌâ֮ǰ£¬Á½¸öÕ˺žùÒѷֱ𴴽¨SSHÃØÔ¿¶Ô£¬²¢ÇÒSSH-key¾ùÒѼÓÈë±¾µØ¼ÆËã»úµÄssh-agent¡£
? ssh-add -l 4096 SHA256:lqujbjkWM1xxxxxxxxxxG6ERK6DNYj9tXExxxxxx8ew /Users/Leo/.ssh/debugtalk_id_rsa (RSA) 4096 SHA256:II2O9vZutdQr8xxxxxxxxxxD7EYvxxxxxxbynx2hHtg /Users/Leo/.ssh/id_rsa (RSA) |
ÔÚÏêϸ½²½â¶àÕ˺ʲ´æµÄÎÊÌâ֮ǰ£¬ÎÒÃÇÏÈÀ´»ØÏëÏÂÆ½Ê±ÔÚTerminalÖÐÓëGitHub²Ö¿â½øÐн»»¥µÄ³¡¾°¡£
? DroidMeter git:(master) git pull Already up-to-date. ? DroidMeter git:(master) touch README.md ? DroidMeter git:(master) ? git add . ? DroidMeter git:(master) ? git commit -m "add README" ? DroidMeter git:(master) git push Counting objects: 3, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 310 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To git@debugtalk:debugtalk/DroidMeter.git 7df6839..68d085b master -> master |
ÔÚ²Ù×÷¹ý³ÌÖУ¬±¾µØ¼ÆËã»úµÄssh-agentÓëGitHub·þÎñÆ÷½¨Á¢ÁËÁ¬½Ó£¬²¢½øÐÐÁËÕ˺ÅȨÏÞУÑé¡£
µ±±¾µØ¼ÆËã»úÖ»ÓÐÒ»¸öGitHubÕ˺Åʱ£¬Õâ¸öÐÐΪ²¢²»ÄÑÀí½â£¬ÏµÍ³Ó¦¸Ã»á²ÉÓÃÕâ¸öΨһµÄGitHubÕ˺ŽøÐвÙ×÷¡£ÄÇÈç¹û±¾µØ¼ÆËã»úÖÐÓжà¸öGithubÕ˺Åʱ£¬ÏµÍ³ÊǸù¾ÝʲôÀ´ÅжÏÓ¦¸ÃÑ¡ÔñÄĸöÕ˺ÅÄØ£¿
ʵ¼ÊÇé¿öÊÇ£¬ÏµÍ³Ã»·¨½øÐÐÅжϡ£ÏµÍ³Ö»»áÓÐÒ»¸öĬÈϵÄÕ˺ţ¬È»ºó²ÉÓÃÕâ¸öĬÈϵÄÕ˺ÅÈ¥²Ù×÷ËùÓеĴúÂë²Ö¿â£¬µ±Õ˺ÅÓë²Ö¿â²»Æ¥Åäʱ£¬¾Í»á±¨È¨ÏÞУÑéʧ°ÜµÄ´íÎó¡£
ÄÇÒªÔõÑù²ÅÄÜÈÃϵͳÕýÈ·Çø·ÖÕ˺ÅÄØ£¿Õâ¾ÍÐèÒªÎÒÃÇÊÖ¶¯½øÐÐÅäÖã¬ÅäÖÃÎļþ¼´ÊÇ~/.ssh/config¡£
´´½¨~/.ssh/configÎļþ£¬ÔÚÆäÖÐÌîдÈçÏÂÄÚÈÝ¡£
# debugtalk Host debugtalk HostName github.com User git IdentityFile ~/.ssh/id_rsa # DT Host leolee HostName github.com User git IdentityFile ~/.ssh/dt_id_rsa
|
ÒªÀí½âÒÔÉÏÅäÖÃÎļþµÄº¬Òå²¢²»ÄÑ£¬ÎÒÃÇ¿ÉÒԶԱȿ´ÏÂÁ½¸öÏîÄ¿µÄSSH URLs£º
git@github.com:debugtalk/DroidMeter.git git@github.com:DTSZ/Store_Android.git
|
ÆäÖУ¬gitÊDZ¾µØssh-agentÓëGitHub·þÎñÆ÷½¨Á¢SSHÁ¬½Ó²ÉÓõÄÓû§Ãû£¨¼´User£©£¬github.comÊÇGitHub·þÎñÆ÷µÄÖ÷»ú£¨¼´HostName£©¡£
¿ÉÒÔ¿´³ö£¬Èç¹û²ÉÓÃÔʼµÄSSH URLs£¬ÓÉÓÚUserºÍHostName¶¼Ïàͬ£¬±¾µØ¼ÆËã»ú²¢²»ÖªµÀÓ¦¸Ã²ÉÓÃÄĸöSSH-keyÈ¥½¨Á¢Á¬½Ó¡£
Òò´Ë£¬Í¨¹ý´´½¨~/.ssh/configÎļþ£¬ÔÚHostÖнøÐÐÇø·Ö£¬È»ºó¾¹ýCNAMEÓ³Éäµ½HostName£¬È»ºó·Ö±ðÖ¸Ïò²»Í¬µÄSSH-key£¬¼´IdentityFile¡£ÓÉÓÚHostName²ÅÊÇÕæÕýÖ¸¶¨GitHub·þÎñÆ÷Ö÷»úµÄ×ֶΣ¬Òò´ËÕâôÅäÖò»»á¶Ô±¾µØssh-agentÁ¬½ÓGitHubÖ÷»ú²úÉúÓ°Ï죬ÔÙ¼ÓÉÏHost±ðÃûÖ¸ÏòÁ˲»Í¬µÄSSH-key£¬´Ó¶øÊµÏÖÁ˶ÔÁ½¸öGitHubÕ˺ŵķÖÀë¡£
ÅäÖÃÍê±Ïºó£¬Á½¸öGitHubÕ˺žͿÉÒÔͨ¹ýHost±ðÃûÀ´½øÐÐÇø·ÖÁË¡£ºóÐøÔÙÓëGitHub·þÎñÆ÷½øÐÐͨÐÅʱ£¬¾Í¿ÉÒÔ²ÉÓÃHost±ðÃû´úÌæÔÏȵÄgithub.com¡£ÀýÈ磬²âÊÔ±¾µØssh-agentÓëGitHub·þÎñÆ÷µÄÁ¬Í¨ÐÔʱ£¬¿É²ÉÓÃÈçÏ·½Ê½£º
? ssh -T git@debugtalk Hi debugtalk! You have successfully authenticated, but GitHub does not provide shell access. ? ssh -T git@leolee Hi leolee! You have successfully authenticated, but GitHub does not provide shell access. |
¿ÉÒÔ¿´³ö£¬´ËʱÁ½¸öÕ˺Ÿ÷˾ÆäÖ°£¬²»»áÔÙ³öÏÖ»ìÏýµÄÇé¿ö¡£
²»¹ý£¬ÎÒÃÇ»¹ÒÅ©Á˺ÜÖØÒªµÄÒ»µã¡£ÔÚ±¾µØ´úÂë²Ö¿âÖÐÖ´ÐÐpush/pull/fetchµÈ²Ù×÷µÄʱºò£¬ÃüÁîÖв¢²»»á°üº¬HostÐÅÏ¢£¬ÄÇϵͳÔõô֪µÀÎÒÃÇÒª²ÉÓÃÄĸöGitHubÕ˺ŽøÐвÙ×÷ÄØ£¿
´ð°¸ÊÇ£¬ÏµÍ³»¹ÊÇû·¨Åжϣ¬ÐèÒªÎÒÃǽøÐÐÅäÖÃÖ¸¶¨¡£
ÏÔÈ»£¬²»Í¬µÄ²Ö¿â¿ÉÄܶÔÓ¦×Ų»Í¬µÄGitHubÕ˺ţ¬Òò´ËÕâ¸öÅäÖò»ÄÜÅäÖóÉÈ«¾ÖµÄ£¬¶øÖ»ÄÜÔÚ¸÷¸öÏîÄ¿Öзֱð½øÐÐÅäÖ㬼´repo/.git/configÎļþ¡£
ÅäÖõķ½Ê½ÈçÏ£º
ÔÚdebugtalk/DroidMeter²Ö¿âÖУº
? git remote add origin git@debugtalk:debugtalk/DroidMeter.git
|
ÔÚDebugTalk/MobileStore.git²Ö¿âÖУº
? git remote add origin git@leolee:DebugTalk/MobileStore.git
|
ÅäÖõÄÔÀíÒ²ºÜÈÝÒ×Àí½â£¬¾ÍÊǽ«²Ö¿âµÄHost¸ü»»ÎªÖ®Ç°ÉèÖõıðÃû¡£Ìí¼ÓÍê±Ïºó£¬ºóÐøÔÙÔÚÁ½¸ö²Ö¿âÖÐÖ´ÐÐÈκÎgit²Ù×÷ʱ£¬ÏµÍ³¾Í¿ÉÒÔÑ¡ÔñÕýÈ·µÄSSH-keyÓëGitHub·þÎñÆ÷½øÐн»»¥ÁË¡£
»ùÓÚHTTPSÐÒéʵÏÖ¶àÕ˺ʲ´æ
ÔÙÀ´¿´ÏÂÈçºÎ²ÉÓÃHTTPS URLsʵÏÖÎÒÃǵÄÐèÇó¡£
ÓÐÁËÇ°ÃæµÄ¾Ñ飬ÎÒÃǵÄ˼·¾ÍÇåÎúÁËÐí¶à¡£²ÉÓÃHTTPS URLsµÄ·½Ê½½øÐÐGitȨÏÞУÑéºó£¬ÏµÍ³»á½«GitHubÕ˺ÅÃÜÂë´æ´¢µ½KeychainÖУ¨Macϵͳ£©£¬»òÕß´æ´¢µ½~/.git-credentialsÎļþÖУ¨Git
credential helper£©¡£
²»¹ÜÊÇ´æ´¢µ½ÄÄÀÎÒÃÇÃæÁÙµÄÎÊÌâ¶¼ÊÇÏàͬµÄ£¬¼´ÈçºÎÔÚ´úÂë²Ö¿âÖÐÇø·Ö²ÉÓÃÄĸöGitHubÕ˺š£
ÅäÖõķ½Ê½ÆäʵҲºÜ¼òµ¥£º
ÔÚdebugtalk/DroidMeter²Ö¿âÖУº
? git remote add origin https://debugtalk@github.com/debugtalk/DroidMeter.git
|
ÔÚDebugTalk/MobileStore.git²Ö¿âÖУº
? git remote add origin https://leolee@github.com/DebugTalk/MobileStore.git
|
ÅäÖõÄÔÀíÒ²ºÜÈÝÒ×Àí½â£¬½«GitHubÓû§ÃûÌí¼Óµ½²Ö¿âµÄGitµØÖ·ÖУ¬ÕâÑùÔÚÖ´ÐÐgitÃüÁîµÄʱºò£¬ÏµÍ³¾Í»á²ÉÓÃÖ¸¶¨µÄGitHubÓû§ÃûÈ¥Keychain»ò~/.git-credentialsÖÐѰÕÒ¶ÔÓ¦µÄÈÏÖ¤ÐÅÏ¢£¬Õ˺ÅʹÓôíÂÒµÄÎÊÌâÒ²¾Í²»¸´´æÔÚÁË¡£
|