前言
Git图形化工具简介与Sourcetree安装教程 – 徐晓康的博客 (myhardware.top)
前文已经说明了Git图形化工具Sourcetree的优点,本文将介绍如何使用此工具管理Gitee/Github中的仓库,实现远程仓库的克隆与更新。
另外,建议设置Gitee与Github双向同步,这样你就只需要管理Gitee就够了,Github上的仓库会自动同步,不需要再担心网络问题了。
相关设置步骤可参考:如何设置Gitee与Github双向同步 – 徐晓康的博客 (myhardware.top))
一. 克隆远程仓库
1.1 Gitee仓库
打开Gitee/Github仓库界面 → 点击克隆/下载按钮 → 选择HTTPS或SSH → 复制链接。
打开Sourcetree → Clone → 输入HTTPS或SSH链接 → 选择一个空白文件夹
→ 克隆。
1.2 Github仓库
(如果是克隆自己的仓库,最简单的是在Sourcetree中添加Github账户,参考1.3中的第5点)
在Sourcetree中使用HTTPS
去克隆Github仓库,可能会报错,报错信息:这是一个无效的源路径/URL,如下图所示。(如果使用SSH,那可能这个问题解决不了,SSH不能使用代理,这意味着很多时候用SSH无法访问Github,所以建议使用HTTPS)
原因分析:此仓库是公开仓库,所有人应该都能够访问并且Clone此仓库,此处报错最大的可能是网络问题
,因为Github经常需要科学上网才能正常访问,但出问题时我在网页是能够正常访问此仓库的;另一个可能就是Git自身的问题,可能需要某些设置,才能让Git能用上系统代理,能够去访问Github
。
解决办法:在Sourcetree中,工具 → 选项 → 网络,勾选向Git/Mercurial配置文件中添加代理服务器信息,如下图所示。
勾选此项后,就是会向Git的全局配置文件,即Hone环境变量所指向的目录
下的.gitconfig
文件,添加代理服务信息,如下图所示。
然后再使用HTTPS去克隆Github仓库就一切正常了,如下图所示。
1.3 其它可能有效的解决办法
如果上述方法不起作用,Sourcetree仍然报错无效的源路径/URL
,网上还提供了各种其解决办法,建议按顺序逐条尝试
,汇总如下:
-
Sourcetree中,工具 → 选项 → 勾选禁用SSL证书验证,如下图所示。
-
Git版本使用嵌入式版本即Embedded,如上图所示。
-
删除电脑中的Sourcetree、Git和Github的相关凭据,控制面板 → 凭据管理器 → 删除相关凭据。
-
在Sourcetree中使用OpenSSH作为SSH客户端,并指定SSH私钥,如下图所示。注意在Github中添加对应公钥,对于SSH秘钥,本博文的第二章有详细说明。
-
在Sourcetree中添加Github账户,步骤如下:添加一个账户,验证选择OAuth,刷新OAuth令牌 → 授权 → 认证成功。此时就应该能在Remote中看到Github账户中的仓库了,包括公开的和私有的。
二. 推送本地仓库改动到远程仓库
本地改动需要先暂存,再提交到本地仓库后,才能推送。
2.1 生成SSH公钥和私钥
打开Windows PowerShell
或Git Bash
,输入以下代码。
ssh-keygen -t ed25519 -C "Gitee SSH Key"
-
-t
key 类型,ed25519类型的秘钥生成速度很快 -
-C
注释,不影响秘钥生成,可不加
再按三次Enter键即生成SSH秘钥,如下图所示。
密钥指纹 (Key Fingerprint):是一个密钥的哈希值,可以用来验证你的SSH公钥的身份。
随机艺术图像 (Randomart Image):是另一个用来视觉验证SSH公钥身份的方法,此图像对于每个不同的密钥都是独特的。
如何使用这些信息?当你要向其他人分享你的公钥时,也可以分享这些信息,以便他们能够验证公钥的正确性。
例如,如果你想确认你正在连接的服务器拥有正确的SSH公钥,你可以请求查看该
服务器的密钥指纹
,并将其与已知的指纹进行比较。如果它们匹配,那么你就可以确信你正在连接的是正确的服务器,更多信息可参考Gitee SSH 密钥指纹 | Gitee 帮助中心。
注意,秘钥生成的位置,就是PowerShell中运行命令的目录,如下图所示。
带pub后缀的是公钥,这个秘钥可以公开,也需要提供给Gitee或者Github;
另一个是私钥,这个保存在本地,不能提供给其它人
。
2.2 在Gitee或Github中添加公钥
登录Gitee → 头像,设置 → SSH公钥 → 添加公钥,设置标题,粘贴公钥 → 确定。
注意,公钥的格式:ssh-加密算法名称
AABG....
任意说明(可省略)
,这三者之间间隔一个空格。
Github中添加公钥操作几乎一样,如下图所示。
2.3 在Sourcetree中添加私钥,并设置同远程仓库一样的用户名和邮箱地址
在Sourcetree中,工具 → 选项 → 一般 → 设置Git用户名和邮箱(保持与Gitee或Github中的一致
)→ 设置SSH,客户端选择OpenSSH,秘钥选择之前生成的私钥。
Gitee支持用户名为中文
,所以我上图中用户名为徐晓康,且我的Gitee中设置了不公开邮箱地址,所以提交邮箱并不是登录Gitee的邮箱,而是Gitee自动生成的一个邮箱地址,可在Gitee的账户设置中查看,如下图所示。
对于Github,如果也设置了不公开邮箱,那么建议使用Github自动生成的邮箱进行推送
,当然真实邮箱也可以,但这样其它人通过提交记录可以看到你的真实邮箱,隐藏邮箱就失去意义了。
2.4 推送到Gitee或Github
推送到Gitee,第一次需要填用户名和密码,密码建议填Token
,隐私性更好,如下图所示。
推送到Github,第一次需要验证身份,推荐使用Token
进行验证,隐私性更好。
三. SSH客户端使用PuTTY / Plink
Sourcetree默认使用的SSH客户端为PuTTY / Plink,可以利用它生成秘钥,和使用PowerShell或Git Bash效果是一样的,但并不推荐,因为PuTTY Key Generator生成秘钥太慢了
,大概需要等半小时。
3.1 PuTTY / Plink生成秘钥
SSH客户端选择PuTTY / Plink,工具 → 创建或导入SSH密钥 → Generate → 等半小时 → Save public key,保存公钥 → Save private key,保存私钥。
3.2 修改公钥格式
公钥格式如下:
此格式无法直接复制到Gitee或Github中,需要做如下更改,如下图所示。使其满足正确的公钥格式:ssh-加密算法名称
AABG....
任意说明(可省略)
,这三者之间间隔一个空格。
后续在Gitee或Github中添加公钥操作一样。
3.3 私钥ssh-ed25519格式转RSA格式
如果用PowerShell或Git bash生成了ssh-ed25519
格式的秘钥,而SSH客户端选择PuTTY / Plink,则需要将私钥转为ssh-rsa
格式,步骤如下:
之后就会生成后缀为.ppk的私钥,可用于PuTTY / Plink SSH客户端。
四. 总结
本文介绍了如何使用Sourcetree的使用方法:
-
将远程仓库克隆到本地,克隆Gitee仓库非常简单,克隆Github则要注意网络/代理问题。
-
推送本地改动到远程仓库,主要就是要生成SSH秘钥对,公钥添加到Gitee和Github中,私钥添加Sourcetree,以及在第一次推送时输入对应的Token。
Sourcetree工具界面直观,支持中文,功能强大,熟练使用后基本可以告别手输Git命令,推荐使用。
如果本文对你有所帮助,欢迎点赞、转发、收藏、评论让更多人看到,赞赏支持就更好了。
如果对文章内容有疑问,请务必清楚描述问题,留言评论或私信告知我,我看到会回复。
徐晓康的博客持续分享高质量硬件、FPGA与嵌入式知识,软件,工具等内容,欢迎大家关注。