可视化图形界面更符合用户的习惯。
实际项目研发过程中,开发人员通常只会使用几个常见的命令进行协同工作。从之前的章节,我们已经深入了解到了 Git 的基本原理和众多命令,有些命令由于不常使用,较难记忆。
Git GUI 为用户提供了一个可视化的图形界面,允许项目开发者通过简单的点击便捷地使用Git,从而不需要在终端上手动输入繁多的文本命令。这样一来,开发者能够更高效、更便捷地进行项目版本管理。
三种主流的 Git GUI 图形化工具
GitHub Desktop
TortoiseGit
Vscode Git
本教程中,只介绍了部分Git GUI 图形客户端,更多详细内容可以查看Git官网
Github Desktop 正是 Github 推出的开源 Git GUI 图形客户端。可以在Windows和Macos平台上进行使用,暂不支持Linux平台。
完成下载后,第一次打开软件会直接要求登录个人 Github 账户进行授权,并配置用户名和邮箱(识别个人创建的commits提交)。
如果没有找到让你登录 GitHub 账号的地方,你需要在 File -> Options -> Accounts -> Sign in 登录。
在完成基本配置后,会出现如下界面:
初次登陆会看到三个选项,也就是建立自己的第一个repository。
建立一个repo可以通过三个方式:
问题场景:
软件:GitHubDesktop
环境(出现问题的场景):代码提交/ 新创建了项目,第一次提交代码
问题描述:
1、Cloning into 'D:\git_my_project\faster-git'...
fatal: unable to access 'https://github.com/datawhalechina/faster-git.git/': schannel: failed to receive handshake, SSL/TLS connection failed
Would you like to retry cloning ?
解决办法:
打开Git Base Here,输入下面的命令,回车即可
git config --global http.sslBackend "openssl"执行
2、Cloning into 'D:\git_my_project\faster-git'...
fatal: unable to access 'https://github.com/datawhalechina/faster-git.git/': OpenSSL SSL_read: Connection was reset, errno 10054
Would you like to retry cloning ?
解决办法:(参考https://www.cnblogs.com/fairylyl/p/15059437.html)
更新DNS缓存。
在cmd中输入以下命令:
ipconfig /flushdns
3、unable to access 'https://github.com/Lily0630/faster-git.git/': OpenSSL SSL_read: Connection was reset, errno 10054
解决办法:
解除SSL验证:git config --global http.sslVerify "false"
执行之后要重启git bash,不然这一条不会生效。这一点在很多文章中都没有点出。
fork
由于在实际开源项目贡献的过程中,开发者往往并没有直接修改仓库内容的权限,因此需要先对目标仓库进行 fork操作,再通过提交PR的方式进行代码的贡献。
在下图中,可以通过左下角的warning标志⚠,判断用户是否有目标仓库的权限。如果没有写入权限,点击create a fork,将目标仓库复刻为自己的仓库,进行随意的修改。
先新建or修改原仓库重点东西,左下角就会出现,点击
在 Github Desktop 中完成fork后,登录 Github 网页就可以在个人仓库中看到目标仓库的复刻版,
commit & push
完成了fork后,当前仓库就会索引到用户个人的复刻仓库,对应于本地指定目录下的文件。此时,用户拥有复刻仓库的所有权限,包括修改,删除,更改可视状态等等。接下来,就可以对本地分支中的代码进行修改,更新而当操作,再push到用户个人的复刻仓库中。
此时,登录 Github 网页版就会发现本地修改的代码已经上传到云端,个人复刻仓库进行了本地同步。
PR
在完成个人仓库的代码更新后,还要注意个人仓库的分支和目标分支的先后情况,如果目标分支领先于fork分支,需要先通过fetch upstream操作进行更新后,再提交PR。
点击Contribute,并Open pull request,向目标仓库提交上传申请。
TortoiseGit 简称 tgit, 中文名海龟 Git ,是一个开放的 Windows 系统下的 Git 版本控制系统的源客户端,提供有中文版支持。由于它不是针对特定IDE(如Visual Studio、Eclipse或其他)的集成,所以可以与任何开发工具和任何类型的文件一起使用。与 Github Desktop 一类的传统图形化交互不同,与 TortoiseGit 的交互主要利用 Windows 资源管理器的上下文菜单,因此不需要打开任何软件,十分轻量、便捷。
在实际项目开发过程中,往往遇到的场景是项目开发者直接通过代码编辑器进行Git操作,在本章中,主要介绍Vscode中Git的一些基础的操作。
导入项目文件,选择侧边栏的第三项,就可以看到以下内容。
##9.4 本章小结
在本章的前言部分,通过比较在日常应用场景下终端命令和图形化界面的优劣,引出了 Git GUI 图形化应用。再详细介绍了三种类型的 Git GUI 图形化应用,Github Desktop、TotoiseGit以及Vscode Git。与传统的命令行不同,图形化界面为项目开发者提供了更为轻松、高效的方式利用 Git 进行项目版本管理。在下一章中,将详细介绍Git团队协作以及合并时的diff工具。
在许多的多人组队(编程)任务、尤其是需要进行交叉修改代码中部分段落的时候,Git这样一个分布式版本控制系统的优势就体现出来,或许这也是一些人开始接触和使用Git的原因。
仓库管理员(一般是仓库的创建者或者拥有者)先在Github上仓库的Settings页面中点击下图的Add People按钮,添加合作者,
约定大致的Commit Message(提交信息)的格式,有fix,update,merge等词语放在提交消息的开头,来大致表示这次提交的大致内容。
,也就是先把仓库Fork到个人账号,(为了避免误操作影响主分支,往往还需设置禁用向主仓库直接push,也就是禁用前一节所述的粗放式提交),然后再用PR请求的方式将fork的修改提交给仓库管理员审核,审核通过之后再合并入主分支;可以参考atlassian文档
others包括非课程相关的改动,如本README.md中的变动,.gitignore的调整等。
实际上一些更大型的项目或者企业,可能会涉及到统筹配置多个仓库及其参与者的权限,因此会用到Projects以及Organization等功能。
与团队协作相伴的往往就是修改冲突(Conflit)的问题了,第三章中已经提到了一些处理冲突的一般方法(例如手动修改和暂时终止Merge进行排查),这里介绍一个著名的用于进行代码比较的软件——Beyond Compare(或者简称bc,其官网为https://www.scootersoftware.com/download.php ,下文中所使用的版本为4.4,其他版本可能略有差异,比如对一些路径中含有的版本号数字可能需要微调,但主要功能基本一致)。
课程地址