当前位置: 首页 > news >正文

这才是Git的正确学习方式

程序员宝藏库:https://gitee.com/sharetech_lee/CS-Books-Store

你想要的,这里都有!

我认为学习一门知识最怕的就是一知半解、草草了事,对于Git这种工具类更是如此。

有很多同学工作后,日常用到git clone、git add、git commit,能够解决日常开发中的基本操作就认为差不多会了。

但是,遇到复杂点的问题,发现对Git的基本原理、操作并没有很深入的理解。

这样,只能再去百度查解决方法,查了半天,踩了不少坑终于解决了,下次又遇到同样的问题,发现之前查的内容全忘了,主要原因还是知识不成体系,当初查询的主要目的还是为了解决当下问题。

这种方法其实并没有少花时间,而且在开发过程中会感觉步履维艰,一步一个坎。

所以,我建议如果想在开发中用好Git,还是需要先系统的学习一下Git的用法。

网上搜一下Git学习教程,会发现多如牛毛,有免费的,也有昧着良心收费的。

其实,我觉得从事开发工作,最好的学习资源往往就是官方提供的免费文档,权威,而且理解深度要比很多博主「二次加工」的好很多。

因此,学习方面我还是更推荐Git的官网文档,这里放一下链接:

https://git-scm.com/book/zh/v2

打开文档可以看到,它全面涉及Git基础、Git分支、服务器上的Git、分布式Git、Github、Git工具、Git内部原理等内容,覆盖非常全面。

img

而且,在每一篇文档中,它都会理论、操作、图示相结合,内容循序渐进,由浅入深,是一份质量很高、内容很严谨的官方文档。

img

此外,官方文档提供PDF、epub两种格式的下载,如果喜欢离线阅读或者打印出来看的同学,它也很不错。

基础知识学完了,可能有些同学对于Git的理解还是不够深入,接下来就需要「动手实践」,这里也给大家推荐一个免费开源的工具–LearnGitBranching,目前在Github已经26k+Star,它或许不是最好的,但是在我看来它非常特别,而且对于理解Git命令有很大的帮助。

img

简单概括,LearnGitBranching是一款Git的可视化学习工具,它通过交互式的方式教授大家学习Git,并且提供一些列的挑战,能通过可视化及挑战帮助大家理解Git操作和命令。

学习者可以在交互页面输入各种命令,页面会动态的根据输入命令,以动画的方式展示输入命令之后的效果,下面可以看一个示例:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c3egIEuq-1669989760103)(https://pic3.zhimg.com/80/v2-a626b04480db920d53ff07cf75d85866_720w.gif)]

通过这种交互式的方式,可以帮助开发人员更加直观的理解每种操作对应的效果,对于加深对Git命令的理解很有帮助。

除了可视化、交互式的方式,它还提供了一些其他功能。

沙盒模式

img

默认情况下,应用程序以“沙盒模式”启动,并已创建基本存储库。在这里您可以输入命令并随心所欲地处理存储库。

你可以在沙盒里做如下操作:

  • undo:撤消上一条命令的效果
  • reset:从头开始
  • git clone:模拟远程仓库

关卡

img

输入levels可以查看可用的课程/挑战,关卡里提供了从基础到高级、技术、技巧不同等级的教程和挑战,对于加深理解很有帮助。

除此之外,LearnGitBranching有一项git golf功能,它会跟踪解决每个调账使用了多少命令,可以更加直观的看到自己对Git的掌握程度。

关卡生成器

如果觉得默认提供的关卡不够,还可以使用 build level 命令构建关卡。

它会提供一个对话框将引导完成每个过程,我们可以提交这些关卡,也可以分享给其他同学。

传送门

https://learngitbranching.js.org/?locale=zh_CN&NODEMO=

Github地址

https://github.com/pcottle/learnGitBranching

除此之外,再给大家推荐另外一个可以和learnGitBranching结合使用的开源工具。

这款开源工具的名字叫做Git Explorer,目前在Github上1.6k个star。

img

这款工具在Github上的简介是“无需网络搜索就可以找到正确的Git命令”。

如果说learnGitBranching在可视化方面做的非常贴心,那么Git Explorer则更多偏重命令层面理解。

从名称也可以看得出来,它主要就是一款面向Git的浏览器,简单来说,你只需要在Git Explorer上点击选择你想要的动作,它就可以动态输出相应的命令。

重点是,这些都是正确的命令,就不用上网搜索各种乱七八糟的播客、到处踩坑浪费时间了!

img

以上图为例,分步选择自己想要的操作:

  1. 想要’添加
  2. 添加’一个分支
  3. 添加后’切换到新分支

然后,它就会动态输出用法命令:

git checkout -b <new name>

这个是开发者比较经常会遇到的一种Git使用场景。

img

除此之外,它还有很多更加深入的用法。

比如:

  • cherry-pick
  • configure
  • debug
  • rebase
  • recover

下面再看一下稍微复杂一些的用法:

img

它不仅给出使用命令,还会给出一些用法提示,介绍它如何使用。

因此,Git Explorer不仅可以作为一款参考工具,日常开发时用来查询命令,还可以作为一款学习Git的工具来用。

传送门

Git Explorer

https://gitexplorer.com/

Github项目地址

https://github.com/summitech/gitexplorer

建议大家有空可以多浏览Github,有很多好用的开源免费工具。但是,目前Github上项目多如牛毛,而且刷榜现在也非常严重,想要找到优质的项目变得越来越难。这里,给大家推荐Github上一个非常不错的项目《DevWeekly》,这个项目每周都会精挑细选一些优质的开源项目,涵盖C++、JAVA、JavaScript、Python、Go等不同编程语言。此外,还有一些开源工具、优秀的技术文章:

https://github.com/Jackpopc/DevWeekly

相关文章:

  • Linux 命令(204)—— ss 命令
  • 第十四届蓝桥杯模拟赛 第二期题解
  • [激光原理与应用-29]:典型激光器 -1- 固体激光器
  • Redis常见问题
  • 【毕业设计】1-基于单片机的城市轨道交通列车超速防护系统_里程表设计(原理图+PCB+源码+仿真工程+答辩论文)
  • 【数据结构】堆和优先级队列
  • 关于如何找环形链表的入环点
  • 下班路上捡了一部手机,我用8年开发知识主动找到了失主
  • 【Linux系统】第三篇:Linux中软件包管理器yum的使用
  • Bootstrap学习(十一)
  • 学生HTML个人网页作业作品:基于HTML实现教育培训机构网站模板毕业源码(8页)
  • 作为前端你还不懂MutationObserver?那Out了
  • 2021 年河南省中等职业教育技能大赛“网络安全”项目比赛任务书解析教程
  • 【目标检测】Faster R-CNN论文代码复现过程解读(含源代码)
  • rpm包常用命令指南
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • Angular4 模板式表单用法以及验证
  • CentOS 7 修改主机名
  • django开发-定时任务的使用
  • Iterator 和 for...of 循环
  • JavaScript DOM 10 - 滚动
  • jquery ajax学习笔记
  • MySQL几个简单SQL的优化
  • Python 基础起步 (十) 什么叫函数?
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • REST架构的思考
  • Ruby 2.x 源代码分析:扩展 概述
  • supervisor 永不挂掉的进程 安装以及使用
  • Zepto.js源码学习之二
  • 不上全站https的网站你们就等着被恶心死吧
  • 大主子表关联的性能优化方法
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • linux 淘宝开源监控工具tsar
  • ​Java并发新构件之Exchanger
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)大道至简,职场上做人做事做管理
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • *1 计算机基础和操作系统基础及几大协议
  • *2 echo、printf、mkdir命令的应用
  • .NET DataGridView数据绑定说明
  • .net 程序发生了一个不可捕获的异常
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .net实现客户区延伸至至非客户区
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • .NET中的十进制浮点类型,徐汇区网站设计
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • [20150321]索引空块的问题.txt
  • [ArcPy百科]第三节: Geometry信息中的空间参考解析
  • [error] 17755#0: *58522 readv() failed (104: Connection reset by peer) while reading upstream
  • [hihocoder1395] 最大权闭合子图
  • [IOI2007 D1T1]Miners 矿工配餐