今天“Go键盘侠”带你们向程序员小姐姐学习:怎么用动画图解Git的命令,赶紧上车。
相信各位程序员都知道,Git作为代码版本管理工具,是团队协作必备的利器,自从这款工具诞生后,便一直深受各位开发者的喜爱。
但是,也有不少公司还一直用svn,甚至有部分开发者对Git什么还一知半解,更别谈怎么用了。
接下来,“Go键盘侠”筛选了几个比较简单的案例,让你们见识下大神是怎样用动画来进行图解Git命令的。
1、Git是什么Git是目前世界上最先进的分布式版本控制系统(没有之一)。
Git有什么特点?简单来说就是:高端大气上档次!
那什么是版本控制系统?如果你用Microsoft Word写过长篇大论,那你一定有这样的经历:想删除一个段落,又怕将来想恢复找不回来怎么办?有办法,先把当前文件“另存为……”一个新的Word文件,再接着改,改到一定程度,再“另存为……”一个新文件,这样一直改下去,最后你的文件夹下有好几份Word备份文档!
过了一周,你想找回被删除的文字,但是已经记不清删除前保存在哪个文件里了,只好一个一个文件去找,真麻烦。
看着一堆乱七八糟的文件,想保留最新的一个,然后把其他的删掉,又怕哪天会用上,还不敢删,真郁闷。
更要命的是,有些部分需要你的财务同事帮助填写,于是你把文件Copy到U盘里给她(也可能通过Email发送一份给她),然后,你继续修改Word文件。一天后,同事再把Word文件传给你,此时,你必须想想,发给她之后到你收到她的文件期间,你作了哪些改动,得把你的改动和她的部分合并,真困难。
于是你想,如果有一个软件,不但能自动帮我记录每次文件的改动,还可以让同事协作编辑,这样就不用自己管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里瞄一眼就可以,岂不是很方便?
这个软件用起来就应该像这个样子,能记录每次文件的改动:
2、Git命令之合并(Merge)我们都知道,在使用 Git 做日常开发项目的时候,都会选择将项目切换成多个分支,在不同分支上处理不同事务。最简单的,就是开发、测试、生产等几个不同环境来回切换,使得项目管理与产品迭代更为轻松,亦可最大化避免项目出现严重漏洞时所带来的伤害。
当我们在不同分支开发完代码后,会选择将分支进行合并(merge)。平时常用的 git merge 操作,又可分为这两种类型:fast-forwar
和no-fast-forward
。
fast-forward
一般情况下,Git 会默认使用 fast-forward 这种类型来处理分支合并,当我们成功合并后,不会产生任何提交记录,且当旧分支被移除后,其分支信息也会被一并删除。
通过动画的方式展示,就像下面这样:
no-fast-forward
而当我们使用 no-fast-forward 模式,即在合并分支命令加入 --no-ff
后缀的方式运行时,便会生成一个新的提交记录,就像下面这样:
在我们日常进行团队协作开发的时候,总会出现同个文件在不同分支上被同时编辑的情况。
这样,当我们提交代码的时候,比较晚提交的另一方,在运行 Git 命令时就会报冲突错误。在正常情况下,只要我们手动处理下冲突文件,然后再重新提交即可。
打个比方,现在代码仓库有个 README 文件,在同一行的位置,在不同分支上被编辑了,如下所示:
那么,使用合并命令,及修复冲突的过程,用动画的形式展示,看起来就像下面这样:
可以看到,在移除多余的提示代码后,会重新产生一条新的提交记录。 4、Git命令之Rebase在进行分支合并前,我们一般会先使用pull
命令拉取线上的最新代码,在保证无任何冲突发生的前提下,再进行分支合并。
但是,这种代码拉取方式是最为简单粗暴的,通过这种方式合并,会使得整个提交记录看起来特别乱,不太直观与优雅。
因此,对 Git 使用比较规范、追求比较高的程序员,都会先使用rebase
整理下提交记录,再提交代码,经过这样处理后的 Git 提交记录,看着就比直男还直了
。
以动画的方式呈现,就像下面这样:
可以清晰的看到,原本对接在 master 分支第二处的 dev 分支,被对接到顶部了。
5、Git命令之Hard Reset
日常开发中,我们可能会因为提交了某些无用代码而进行回滚操作。通常在只有一个人独立开发的项目情况下,会选用--hard
命令来进行回滚处理。
不过,这种操作方式有个不好的地方,在多人协作的时候,这么搞很容易使分支出现冲突,或直接毁掉别人的提交记录。
hard reset
以动画的形式表现,看起来就像下面这样:
除此之外,还有其它命令:Reverting、Cherry-picking、Fetch 等相关操作,这里就不跟大家一一讲解了。
以上是有关Git命令的介绍,如果觉得对你有帮助的话,可以点波关注分享给你的小伙伴。
感谢您的阅读,如有疑问或意见请及时反馈给我们。
推荐文章:
听说深圳牛掰的互联网公司有这些?