之前使用Sourcetree都是通过HTTP/HTTPS的方式来管理项目,大多都是托管到GitHub、码云等平台,最近在使用公司搭建的Git服务器时,总是遇到权限的问题而不能pull/push代码,不知道是不是因为使用的HTTP的原因,最后考虑使用SSH的方式来管理项目代码。
使用SSH,就需要在本机生成公私钥,然后配置到相关的管理平台,这里GitLib 和 GitHub 来进行说明。
生成SSH公私钥
打开电脑终端,输入以下SSH指令:
ssh-keygen -t rsa -C "gitSSH"
- -t 指定密钥类型,默认是 rsa ,可以省略。
- -C 设置注释文字,比如邮箱。
- -f 指定密钥文件存储文件名
如果不使用 -f 来指定文件名称,会输出如下来要求输入文件名称:
# Enter file in which to save the key (/c/Users/you/.ssh/id_rsa): [Press enter]
也可以不输入,直接回车,就会生成默认文件名 id_rsa(私钥) 和 id_rsa.pub(公钥) 两个秘钥文件,推荐使用默认名称。
打开公钥:
cat ~/.ssh/id_rsa.pub
复制输出的字符串即可!
或者直接到.ssh文件夹找到id_rsa.pub(公钥)文件,使用文本打开:
打开Finder -> 前往 -> 个人
在此文件夹下会生成一个.ssh 文件夹,里面包含有生成的公私钥文件。
可以看到该文件夹默认是隐藏掉的,如果找不到,可以在终端使用以下指令,显示隐藏的文件夹:
defaults write com.apple.finder AppleShowAllFiles -bool true
PS:如果需要隐藏,将指令的最后的值改为false即可
配置公私钥
打开GitLib,点击导航最右侧的用户头像,在下拉列表中选择 Settings :
打开的用户设置中,左侧有SSH Keys选项:
将公钥复制粘贴到 key内即可,title可自定义,也可使用粘贴后的默认名称,默认是在输入指令是 -C 指定的说明字符串。
如果是使用的Github,同样点击最右侧用户头像,在下拉列表中选择 Settings ,在打开的页面右侧选择 SSH and GPG keys:
然后选择New SSH key 即可!
使用Sourcetree 管理SSH
可以通过打开的项目主页,右侧的设置选项,查看当前使用何种方式来管理的项目,即远程Git仓库地址:
可以看到现在使用的是HTTPS的远程地址。
切换为SSH:方式一
Sourcetree 支持HTTPS和SSH的相互转换,在标签页,选择需要切换的标签,右键,选择转换成 SSH:
此时,再去看远程仓库地址,就已经变为SSH的仓库地址了:
此时,再在标签页,右键,可以看到转换成 SSH 选项变成 转换成 HTTPS选项了,再次选择可以切换回HTTPS方式。
以上是使用Github的链接地址来进行的,但是在使用Gitlib地址的时候,转换就不成功,目前能够想到的原因是,我们的Gitlib使用的是HTTP的链接,而不是HTTPS,可能两者之间不能直接转换,而我们的本地仓库没有配置HTTPS,因此这个方法,暂时不能采用了。如果你们的Git仓库是HTTPS方式的,这样切换应该是没有问题的。那么,使用HTTP的就看方式二吧。
切换为SSH:方式二
打开本地的项目文件夹,在根目录下会有一个.git文件夹,这个文件夹默认也是隐藏的,怎么查看隐藏文件夹,看上面第一部分的指令。
打开文件夹,找到config文件,使用文本打开:
其中,有一项:[remote "origin"],将其中的url换成SSH地址即可:
然后,再打开Sourcetree,就可以使用SSH的方式来管理项目了。
PS: 也可以不显示隐藏文件,或者找不到config文件,可以点击上图中 编辑配置文件... 按钮,会打开当前项目的Git配置文件。