网易首页 > 网易号 > 正文 申请入驻

Git捷径,游戏搞定!

0
分享至

前几天公司有人做git培训,讲的枯燥乏味,观众们都睡着了。这不由的让我想起一个非常棒的可视化git学习工具。有了这个工具,公司内的git培训师,可以下岗了。

本文将详细介绍这个工具,文末会给出工具地址。

Git已经是程序员的必备技能,但是它有门槛。很多时候,只掌握了pull、push、commit等指令,并不能解决问题,尤其是在有冲突的时候。

根据你输入的git指令,这个过程,全部都是动画显示的。通过箭头的指向,你能很容易的看出git仓库的数据流,是如何变化的。

1. 提交相关

下图是提交了两次commit之后的动画。可以看到版本变了两次,而且是相同颜色的。

git commit
git commit

下图是执行了新建分支的指令。通过指定b参数,可以在不存在这个分支的时候,自动创建。

git checkout -b bugFix

下面创建了一个新的分支bugFix,分别在main和bugFix提交一次代码后,使用merge指令把bugfix合并到了main。

git checkout -b bugFix
git commit
git checkout master
git commit
git merge bugFix

rebase会让代码变的更加清晰。下图演示了rebase命令的用法。

git checkout -b bugFix
git commit
git checkout main
git commit
git checkout bugFix
git rebase main

2. HEAD移动

HEAD 总是指向当前分支上最近一次提交记录。大多数修改提交树的 Git 命令都是从改变 HEAD 的指向开始的。

通过HEAD能够上下移动,很方便的功能。

下图演示了可以直接通过hash值指定HEAD的指向。通过checkout可以在任意时候漫游到任意的提交。

git checkout c4

通过^~等特殊符号,可以完成相对跳转。不用再到处找那串非常长的hash值了。看图说话。

git checkout bugFix
git checkout HEAD^

当然,你可以直接简化成

git checkout bugFix^

是不是很简单?

同样的,~这个符号,后面可以带数字,用来实现连级跳。我们看一下它的效果。

git branch -f bugFix HEAD~2
git branch -f main c6
git checkout HEAD^

reset和revert都是用来回退提交的。不过相对来说,reset是对于local的,revert是相对于remote的。

git reset c1
git checkout pushed
git revert c2

以上的功能,已经涵盖了90%的git操作。但是,如果你玩不转另外10%的话,在某些情况下会变得非常困扰。

3. cherry-pick

如果你想将一些提交复制到当前所在的位置(HEAD)下面的话, Cherry-pick 是最直接的方式了。我个人非常喜欢 cherry-pick,因为它特别简单。

它和git rebase不同的是,可以只选取其中的部分提交,抓取过来。

git cherry-pick c3 c4 c7

另外,我们还可以使用交互式的rebase。比如,git rebase -i HEAD~n会打开对话框进行调整,在此不再重复。

交互式 rebase 指的是使用带参数--interactive的 rebase 命令, 简写为-i。
4. 几个技巧

学完上面这些,可以说在工作中应该游刃有余了。下面是几个常用的技巧。

要完成上图的转换,只需要切换到main分支,然后执行git cherry-pick c4即可。

git checkout main
git cherry-pick c4

下面这个例子更麻烦一些。你之前在 newImage 分支上进行了一次提交,然后又基于它创建了 caption 分支,然后又提交了一次。此时你想对的某个以前的提交记录进行一些小小的调整。比如设计师想修改一下 newImage 中图片的分辨率,尽管那个提交记录并不是最新的了。

git rebase -i HEAD~2 #修改C2和C3的顺序
git commit --amend
git rebase -i HEAD~2 #修改C3'和C2''顺序
git branch -f master

git commit --amend 相当于上次提交错误的信息被覆盖了,gitk图形化界面上看不到上次提交的信息,git log上也看不到之前的信息,而add 后再commit 相当于重新加了一个信息。

我们能够另外一种方式完成这个目标。可以利用 cherry-pick 可以将提交树上任何地方的提交记录取过来追加到 HEAD 上的特性。

git checkout main
git cherry-pick newImage
git commit --amend
git cherry-pick caption

使用git tag可以给记录打标签。

git tag v0 c1
git tag v1 c2
git checkout c2
5. 高级技巧

有时候,你为了把提交记录整理成好看的提交顺序,需要下点力气。这在有些追求卓越的团队是存在的,但一般团队并不会这么折腾。

所以它才叫高级技巧。比如下面这张图的转变,我们需要经过多次rebase。

git rebase main bugFix
git rebase bugFix side
git rebase side another
git branch -f master another

通过~、^等特殊符号可以快速跳转,它们级连起来更加富有魅力。

git branch bugWork HEAD~^2~

比如要完成上面的分支创建,我们只需要一条命令就可以。当然也可以直接用git brach bugWork c2

来个更复杂的例子。

git checkout one
git cherry-pick c4 c3 c2
git checkout two
git cherry-pick c5 c4 c3 c2
git branch -f three c2
6. 远程仓库

clone命令是最基本的拷贝远端仓库的命令。要达到下图的目标,只需要简单执行git clone指令即可。

通过下面的命令,可以看出远程仓库和本地仓库的HEAD分离状态。

git commit
git checkout o/master
git commit

下图演示了fetch指令的作用。git fetch并不会改变本地磁盘的文件,它只是同步了远程的数据,然后将远程分支的指针移动了一下。fetch只是下载动作。比如下面这张图的转换。

git pull是git fetch和git merge的缩写。下图可以展示这个过程。

git pull

下面是下面一关的答案,fakeTeamwork是这个教程自己造的命令。

git clone
git fakeTeamwork 2
git commit
git pull

git push也是非常简单的命令,所以也不再介绍。

git commit
git commit
git push

下面的关卡会越来越复杂,直接看截图效果比较差。这里直接给出答案,可以实际操作一下。

07. 偏离的提交历史

git clone
git fakeTeamwork 1
git commit
git pull --rebase
git push

08. 锁定的master

git reset --hard o/main
git checkout -b feature C2
git push origin feature
End

那么,如何得到这个工具的地址呢?

方法如下:关注公众号xjjdog,回复git,即可获取线上实际演练地址。同时,将获取git学习的全套最优方案。(让人惊艳的小工具)

有了这些工具,能为你节省大把时间,你可以抽出小小的几秒,送我一个三连。

作者简介:小姐姐味道 (xjjdog),一个不允许程序员走弯路的公众号。聚焦基础架构和Linux。十年架构,日百亿流量,与你探讨高并发世界,给你不一样的味道。我的个人微信xjjdog0,欢迎添加好友,进一步交流。

3.
4.
5.

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
钱赚够了名声没了,英皇风波再升级!荒唐一幕出现,霍震霆也遭殃

钱赚够了名声没了,英皇风波再升级!荒唐一幕出现,霍震霆也遭殃

青杉依旧啊啊
2026-05-07 09:41:09
陈昊宇再次开启靓姐路线,亮白色吊带搭配同款西服尽显女王风采!

陈昊宇再次开启靓姐路线,亮白色吊带搭配同款西服尽显女王风采!

说不尽的人心
2026-05-13 20:32:19
中午11时,中美磋商准时开始,特朗普发现:中国比他想象中更厉害

中午11时,中美磋商准时开始,特朗普发现:中国比他想象中更厉害

天气观察站
2026-05-13 18:54:21
爱德华兹:今晚文班做的某些事真的是无解,你只能祈祷他投丢

爱德华兹:今晚文班做的某些事真的是无解,你只能祈祷他投丢

懂球帝
2026-05-13 15:11:36
山东济南一蔬菜市场仓库发生火灾,现场浓烟明显,官方通报:起火物质为保温材料,火灾未造成人员被困,具体起火原因正在调查中

山东济南一蔬菜市场仓库发生火灾,现场浓烟明显,官方通报:起火物质为保温材料,火灾未造成人员被困,具体起火原因正在调查中

潇湘晨报
2026-05-13 15:22:08
尊重历史,青海马家军在陕西山西河南跟日军血战八年,是真的吗?

尊重历史,青海马家军在陕西山西河南跟日军血战八年,是真的吗?

鹤羽说个事
2026-05-12 22:36:35
最新,章建平建仓股曝光!牛散天团押注“AI+商业航天”(附名单)

最新,章建平建仓股曝光!牛散天团押注“AI+商业航天”(附名单)

数据宝
2026-05-13 12:30:19
访华专机起飞前,美方突然改口摊牌,认为有三件事中国必须解决

访华专机起飞前,美方突然改口摊牌,认为有三件事中国必须解决

呼呼历史论
2026-05-13 18:51:48
女子吃霸王餐给差评:正脸曝光,自认为没错,要上媒体跟老板对质

女子吃霸王餐给差评:正脸曝光,自认为没错,要上媒体跟老板对质

阅微札记
2026-05-13 14:31:03
释永信被一女子爆料:她们姐妹住少林寺3天,争着往释永信房间跑

释永信被一女子爆料:她们姐妹住少林寺3天,争着往释永信房间跑

江山挥笔
2026-03-23 15:40:31
特斯拉宣布停产,震惊全网!

特斯拉宣布停产,震惊全网!

财经三分钟pro
2026-05-12 15:10:58
两次嫁给梁靖崑,退圈安心照顾两个儿子,如今丈夫成为大学教授

两次嫁给梁靖崑,退圈安心照顾两个儿子,如今丈夫成为大学教授

泠泠说史
2026-05-13 21:12:47
贝索斯花了7000万,让桑切斯在Met Gala出尽风头,梅根没收到邀请

贝索斯花了7000万,让桑切斯在Met Gala出尽风头,梅根没收到邀请

小书生吃瓜
2026-05-11 15:36:21
2026年电费新规来了!7月1日起执行,看完再用电,每月少花几十块

2026年电费新规来了!7月1日起执行,看完再用电,每月少花几十块

陈博世财经
2026-05-12 17:03:49
75岁大爷与保姆生下儿子,做亲子鉴定后,大爷却被子女们气得心梗

75岁大爷与保姆生下儿子,做亲子鉴定后,大爷却被子女们气得心梗

黄家湖的忧伤
2025-03-06 09:30:21
“手擀”是商标,面是机器做的!产品已下架

“手擀”是商标,面是机器做的!产品已下架

南方都市报
2026-05-13 19:16:39
一场未上的向鹏算不算世界冠军?队内已承认,8年前国乒有先例

一场未上的向鹏算不算世界冠军?队内已承认,8年前国乒有先例

米修体育
2026-05-13 00:25:29
梁靖崑两盘3-2有四大特效:急疯教练吓晕观众,气死对手爽歪自己

梁靖崑两盘3-2有四大特效:急疯教练吓晕观众,气死对手爽歪自己

老高说体育
2026-05-13 15:41:20
詹姆斯今年季后赛得到232分,大于历史其他41岁以上球员总和

詹姆斯今年季后赛得到232分,大于历史其他41岁以上球员总和

懂球帝
2026-05-13 14:50:08
卡塔尔主帅被打服!印尼则表示:U17国足华而不实出线靠运气!

卡塔尔主帅被打服!印尼则表示:U17国足华而不实出线靠运气!

去山野间追风
2026-05-13 13:43:16
2026-05-13 21:59:00
小姐姐味道
小姐姐味道
十年架构,日百亿流量
329文章数 1203关注度
往期回顾 全部

科技要闻

腾讯一季度营收1964.6亿元 同比增9%

头条要闻

媒体:黄仁勋绝非"顺路同行" 而是美方刻意纳入的筹码

头条要闻

媒体:黄仁勋绝非"顺路同行" 而是美方刻意纳入的筹码

体育要闻

14年半,74万,何冰娇没选那条更安稳的路

娱乐要闻

白鹿掉20万粉,网友为李晨鸣不平

财经要闻

美国总统特朗普抵达北京

汽车要闻

C级纯电轿跑 吉利银河"TT"申报图来了

态度原创

健康
教育
时尚
家居
公开课

干细胞能让人“返老还童”吗

教育要闻

长检匠心:融智聚力护成长 长沙未检共探协同保护新路径

快来解锁富家千金风穿搭,穿舒适又时髦,一键拿捏优雅气质

家居要闻

内在自叙,无域有方

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版