当前位置:首页 > 每日看点 > 正文内容

为什么Git的教程都那么繁杂?

卡卷网11个月前 (01-10)每日看点182

Git的内部原理并不是很复杂,弄清楚四种对象和ref以后,几乎所有Git作都可以在脑海中具象化。但是Git的教程的确很繁杂,我反复阅读的教程包括文档和ProGit,都算大部头,有些细节部分讲得不清楚的地方,还会在网上搜下大神们写的博文。

当你觉得所了解的Git知识已经够用的时候,大概率是因为你的工作和学习场景中只需要用到这些知识。对于很多码农来说,知道gitadd,gitcommit,gitpush,gitpull就已经够了。但是如果去看这几个命令的帮助文档,会发现里面洋洋洒洒一大堆东西。那些你觉得已经不需要了解的内容的对你毫无帮助吗?

有同事问过我这样一个问题:在一个文件里修改了好多内容,但是提交的时候只想提交其中一部分,该怎么做?我问他平时遇到这种情况是怎么处理的,他的做法是这样:把修改好的文件复制一份,然后把原本的文件修改全部回退掉,接下来再用eyondcompare对2个文件,将其中要提交的那一部分修改合并到原本的文件里,合并完要的部分之后再提交,提交完了以后,再把剩余的修改通过eyondcompare合并过去。这种做法完全可以解决他的问题,但是他明显觉得不够方便,码农的直觉告诉他Git应该有什么方法可以处理这个问题,但他又不知道具体要怎么做。

命令行的话利用gitadd的-p/--patch参数可以很方便地解决这个问题,按几下键盘就可以。而很多GUI工具里应该也有类似作,看起来还更加友好。我跟他说了这个方法以后问他,如果他在没有eyondcompare这类工具且只能使用命令行的环境里遇到这种情况要怎么办。他说那只能备份以后,回退再手动再改一遍了。的确,条条大路通罗马,只是有的平坦,有的崎岖。对于一般用户,如果能深入的了解和学习下常用命令的参数和作方法,很可能会带来很多便利。

用的多了,会遇到很多类似的场景。举几个的例子,都是实际遇到过的问题,想下是否能通过git本身提供的机制去解决,能想到几种处理方式,这些方式有什么优劣?

    想和远程仓库同步下当前的分支,但当前分支上有很多还没有commit的修改。现在在dev分支上改代码,改了一周,还没有改完,要紧急处理下feate分支上的一个ug。在把自己当前分支的commitrease到另一个分支上的时候发生了冲突,而冲突的是个二进制文件,只想保留另一个分支的版本。已经知道两个commitA和,怎么判断是否在A的历史版本里。已经明确了在A的历史版本里,但是查看A对应的内容时却没有找到的修改,可能有哪些原因。在windows上克隆了一个仓库,刚克隆完立刻用gitstatus和gitdiff检视,就发现有个文件被改动了,尝试了几次都是一样的表现,可能是什么原因造成的。有两个分支A和,差异非常大,现在想把分支的文件内容变得和A完全一样,可以不保留原本的历史记录。如果要保留原本的历史记录又该怎么做。有个本地仓库,希望gitfetch的时候从githu上的远程仓库里拉取数据,gitpush的时候往gitla的远程仓库里推送数据。怎么把A仓库的某个commit修改应用到仓库分支上。改了一周的代码,没有commit,在处理事情的时候使用gitstash保存了下。后面gitstashpop的时候却一直报错,提示有个oject已经corrupt,要怎么把这一周的工作给恢复出来。

现在很多和工具都把Git作为工具链的一部分,当你使用这些和工具的时候,避免不了要和Git打交道。而且遇到的场景远“提交代码”要复杂很多。譬如你们团队要对每一笔提交进行自动化构建,并将结果存储起来,如果有错误的话要记录下来通知处理。你们团队把这个任务交给了你。你研究以后发现,搭建个jenkins就可以实现这个需求了,利用jenkins的Git插件和钩子push事件,然后克隆仓库检出分支进行构建。那这个时候你就要去了解githook是怎么回事,但是假如你们使用的代码托管平台是Gitla,还要学习wehook是怎么回事。当你把这些搞定以后,自动化构建任务也顺利的跑了起来。团队把这个当作一个增效案例报了上去,团队看了以后说这个挺好的,把我们负责的仓库也加进去吧。于是这个自动化构建规模越来越大,终于有一天用户反馈构建任务越来越慢,还经常报错,什么执行构建任务的上文件变成只读了、空间不够了、克隆仓库速度很慢。这个时候你又会要去了解有什么办法可以让克隆仓库速度变快并且要节省空间。在gitclone和gitsparsecheckout相关的文档里找到线索后,你又很好地解决了这个问题,然而又接到了新的需求:团队希望有个前端页面,用户可以在里面自己配置仓库、分支之类的参数,然后后台任务根据这些配置自动去跑,而不用每次都通过你手动去jenkins上改配置;此外团队的需求也越来越丰富,你的构建脚本也越来越复杂。作为精通前后端的全栈开发,你又接下了这个任务。你在脚本和代码里用到了越来越多、越来越复杂的Git命令,通过命令行的方式满足不了需求了,你又学习了jgit和gitpython的使用方法,并将它们用到了你的脚本和代码里。在此期间,你可能还学习了gitignore,pathspec,gitattiute之类的知识,学习了如何用底层git命令手搓commit。最终,你成为了一个Git资深用户,而对于Git本身的贡献,可能仅仅是提了一些issue,并没有的参与到修改Git源码中去。

从最初只要利用Git提交代码的码农到如今的Git资深用户,期间你翻阅了很多文档,阅读了很多博文,经常泡在stackoverflow和githu上,学习了无数繁杂的内容。如果不是这些繁杂的内容,你遇到的很多问题没法解决。的确,就像“又不是不能跑”一样,能用就行。但是对于不同的人、同一个人的不同时期,“能用”也是一个变量。

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2025/01/8362.html

分享给朋友:

相关文章

互联网时代,四川为什么要办书展?

互联网时代,四川为什么要办书展?

 2004年,实体书店还是人们买书的唯一渠道,国内的书业会展旨在为出版社与发行商提供订货平台。因此,直面读者、汇集全国各地出版社新书的上海书展一经推出,便引发购书热潮。   15年之后的20...

五个私藏宝贝网站!上班族摸鱼必备,打造快乐小天地

五个私藏宝贝网站!上班族摸鱼必备,打造快乐小天地

有朋友提到,虽然一整天都在“摸鱼”,但却感觉身心俱疲,甚至比一直忙碌工作还要累。其实这背后是有科学依据的。当人专注于工作时,会进入一种“心流”状态,这种状态让人感到兴奋、满足且充实。相反,如果在工作时分心“摸鱼”,会导致注意力分散,增加认知...

Layui 不更新了么?

Layui 不更新了么?

layui2.8已经于今天正式发布了,新增优化了大量特性,这里按照layui更新日志的模块结构,详细为你一一介绍。基础风格调整新版调整主色调为#16baaa,在原有的墨绿基础上赋予了清新。更简单的构建构建代码更简单,除字体外,只有js和cs...

为什么我们一直在给B站充大会员但B站却一直处于亏损状态?

我讲一下离谱的真相吧,欢迎喷我。很多人都觉得B站在赶走人才,赶走优秀的长视频创作者,也觉得知乎在这么做,是没错的。确实在这么做。而原因很简单。只有影响力很大的KOL才有商业价值。(KOL是指“关键意见领袖”)而你说你是人才?对不起,人才不赚...

拼多多百亿补贴买手机电脑等数码产品靠谱吗?

大家很多人都在问pdd百亿补贴购机靠谱吗?首先声明一下,我不是pdd的人,我只是一个普普通通混迹从事pc行业的数码玩家,我只是在评论区看到很多人都在无脑推百亿补贴,特地发一条怗子来说明一下这个东西。此怡不存在偏向引导,此站仅站在我个人角度上...

为什么不建议买游戏本?

我建议厂家改名厂家犯了个巨大错误:游戏本的主要受众是在校大学生,但大学生买电脑的买单人是他们的父母。你让父母给孩子买个游戏本,父母怎么想?如果你改成高效学习本、优质学习本、智能学习本、高速学习本,甚至硕博连读本,你看看家长舍不舍得砸这个钱...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。