准备
- 在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。