準備
- 在GitHub注冊賬號
- 下載sourceTree客戶端
正文
1. 在GitHub創建倉庫
New repository.png
New repository input.png
2. 克隆倉庫
克隆的方式有兩種
1. Use HTTPS
2. Use SSH
第一種比較方便直接復制粘貼就行
clone use HTTPS.png
使用第二種需要添加ssh密鑰, 因為本地的git倉庫和Github服務器之間是通過ssh加密的
Colne use ssh.png
3. 使用sourceTree把倉庫克隆到本地
3.1 克隆
create.png
clone use ssh remind.png
clone success.png
3.2 提交
commit.png
see repository.png
PS: 添加SSH keys
1. 生成SSH密鑰
1.1 終端中執行如下命令,進入.ssh文件夾,查看是否已經有了ssh密鑰; 如果沒有密鑰則不會有此文件夾,有則備份刪除:
cd ~/.ssh
2. 生成公鑰
ssh-keygen -t rsa
//這里是輸入文件名,直接回車的話,則使用默認名id_rsa。
Enter file in which to save the key (/Users/rason/.ssh/id_rsa):
//這里是輸入密鑰密碼,直接回車的話,密碼為空。
Enter passphrase (empty for no passphrase):
//這里是再次輸入密鑰密碼,直接回車的話,密碼為空。該密碼就是使用該密鑰所需要輸入的密碼。
Enter same passphrase again:
看到如下提示,說明已經生成成功。
Your identification has been saved in /Users/rason/.ssh/id_rsa.
Your public key has been saved in /Users/rason/.ssh/id_rsa.pub.
The key fingerprint is:
………………
3. 查看并復制公鑰
cat id_rsa.pub
seeKey.png
4. 添加公鑰
4.1 打開GitHub的setting頁面
settings.png
4.2 將剛剛復制的公鑰粘貼到key中
add ssh keys.png
5. 測試是否連接成功
ssh -T git@github.com
有以下信息,說明已經成功。
success.png
PS: 上述申請的公鑰同樣可擁有開源中國--碼云的ssh keys
在修改個人資料中選擇ssh公鑰
add key.png
輸入命令查看上述申請的公鑰并復制粘貼到添加公鑰的輸入框中
cat ~/.ssh/id_rsa.pub
添加后,在終端(Terminal)中輸入
ssh -T git@git.oschina.net
若返回
Welcome to Git@OSC, yourname!
則證明添加成功。
os china ssh key.png
至此就可以Use SSH從GitHub和碼云clone項目了
os china clone.png
SourceTree 一直提示輸入密碼問題
一、系統更新問題
項目是走ssh克隆下來的,之前也配置過密鑰。按理來說不應該出現這樣的問題,在日常開發過程中突然需要我輸入密碼?
在經過多方面資料查找與解決方案嘗試后終于找到了原因,背后的黑手是系統升級了,在升級為macOS catlina后 ssh的代理就被自動清除了,所以重新添加一下就好了
步驟:
1、在控制臺輸入 【ssh-add -L】,控制臺會顯示如下:
$ ssh-add -L
The agent has no identities.
2、再執行一次【ssh-add】,然后輸入電腦密碼就好了,成功后會展示你本機的ssh密鑰。控制臺顯示如下:
Enter passphrase for /Users/macName/.ssh/id_rsa:輸入電腦密碼
Identity added: /Users/macName/.ssh/id_rsa (/Users/macName/.ssh/id_rsa)
3、最后再次執行git命令則無需輸入密碼了。
二、SourceTree自身問題
問題: 不管輸入哪個密碼都是一直循環提示需要輸入密碼,并且也確認在github上添加過ssh key。
解決辦法:
先在命令行git clone一次之后,再重新使用SourceTree進行克隆就沒有問題了,后面就可以隨意使用SourceTree進行克隆其他項目。
不止github.com,code.aliyun.com也可能出現該問題,同樣的解決辦法處理即可。
原因: git clone 一次之后會在.ssh/known_hosts中記錄ssh key。