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

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

卡卷网1年前 (2025-01-10)每日看点204

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

分享给朋友:

相关文章

自媒体如何快速起步?

自媒体如何快速起步?

有两种经验,可供参考。第一种是:现象级的爆火、爆款,这种情况捞到钱,实现财务自由的人并不多,但确实存在。只不过非要说清楚为什么这个账号可以火、可以短时间内赚到普通人一辈子赚不到的钱,他们自己也不一定能说清楚,因为赶上了风口(内外部情况)。举...

你捡过最大的漏是什么?

你捡过最大的漏是什么?

买了套二手房,软磨硬泡便宜了1个w 结果就是一屋子狼藉 原业主说反正你们要重新装修 就不收拾了 等完了你们一起收拾掉吧 落了很多柜子 电器是啥的 今天打开卧室柜子一看…现在是去存钱的路上有朋友知道这样存钱银行会给发大米跟油吗...

无人机真的是中国领先吗?

无人机真的是中国领先吗?

巧了这是。捡到了一台大疆。应该是别人飞丢的。在草丛中泡过水,轴承锈死,电池鼓涨已,经没有维修价值了。但作为玩电子的,免不了要把它解剖,研究一番。那么,我们看看它的国产化率能有多少吧。图片说话:解释一下吧。图一,高通 美国图二,MPS: 美国...

怎样拥有一台最便宜的服务器?

怎样拥有一台最便宜的服务器?

内容提示:主打一个 DIY + 极限白嫖 =)某宝花10块买一个“随身WiFi”,刷入Ubuntu,用SSH远程连接,但是记得一定要把外壳撬掉然后粘个散热器(哪怕是白萝卜也彳亍),否则会过热详细去酷安社区搜“随身WiFi”=========...

被网络诈骗了,钱还能追得回来吗?

我刷单被骗,当时不知道怎么办在百度上找个律师说他们能追回,还说不用报警,我傻的就信了,支付了费用签合同,我还是不信他们,报警了,报警没几天警官就连系我追回一笔钱让我注意银行卡到账通知,又过几天我第二笔钱到账了,律师说是他们追回的,要我支付后...

为什么现在 AI 已经没啥热度了?

从改名叫大模型那一刻,懂行的就已经放弃了,剩下资本和无知网友还有点后劲所谓大模型,本质就是一个更大、更快数据库的传声筒。更大更快本身确实很厉害,但依然只是传声筒,和AI根本不沾边数据库之外仍然一无所知,甚至数据库之内的输出逻辑还要依赖大量人...

发表评论

访客

看不清,换一张

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