当前位置:首页 > 科技  > 软件

Git 难用?有救!

来源: 责编: 时间:2023-11-30 09:27:43 366观看
导读Git 设计问题尽管 Git 被广大程序员所推崇,但它并非完美无缺,也不适用于所有场景。命令繁多且易混淆Git 至少有 157 个命令,常用的可能仅有十个。更麻烦的是,你可能会发现经常使用的命令与实际操作不完全对应,这会增加认知

Git 设计问题

尽管 Git 被广大程序员所推崇,但它并非完美无缺,也不适用于所有场景。nlS28资讯网——每日最新资讯28at.com

命令繁多且易混淆

  • Git 至少有 157 个命令,常用的可能仅有十个。
  • 更麻烦的是,你可能会发现经常使用的命令与实际操作不完全对应,这会增加认知负担。通常,你需要组合多个命令来实现目标,说明 Git 的命令设计过于底层。

暂存区(staging area)

暂存区是 Git 仓库的关键部分,负责协调和管理文件变更。优点:nlS28资讯网——每日最新资讯28at.com

  1. 暂存变更:当你修改文件后,Git 会将变更暂存在暂存区,而非直接应用到仓库。这样,你可以在提交前查看和验证变更,确保符合预期。
  2. 控制提交:暂存区有助于有目的地进行提交。如果没有暂存区,每次修改文件,Git 都会自动提交变更,可能导致频繁提交,难以回滚。使用暂存区,你可以更有意识地管理提交,避免不必要的冲突和错误。
  3. 简化提交操作:暂存区使得提交过程更简单。只需将所需更改暂存,然后一次性提交到仓库。减少多次提交操作,提高工作效率。
  4. 便于回滚:暂存区让你在提交变更前查看和修复问题。若在暂存区发现问题,可直接回滚到之前版本,无需担心之前的修改。降低错误影响,加快修复速度。
  5. 版本控制:暂存区有助于更好地进行版本控制。开发过程中,可以将暂存区的变更与特定版本关联,便于需要时回滚到之前版本。对大型项目尤为重要,保持项目稳定性,同时允许团队成员进行实验性开发。

缺点:nlS28资讯网——每日最新资讯28at.com

复杂性增加:对于初学者,暂存区的概念可能较难理解。nlS28资讯网——每日最新资讯28at.com

全新工具助力 git

许多新工具致力于改进 git 的用户体验,根据我个人的观察,这些改进主要集中在简化命令、清除暂存区、推崇单一主干分支理念以及 stack 工作流。其中,stack 工作流尤为值得一提,下面将以 meta 的 sapling 为例进行讲解。nlS28资讯网——每日最新资讯28at.com

stack 工作流

使用过 git 的朋友们应该都能体会到 rebase 的优势,但在实际操作中,人们往往感到困惑。以下是一个典型场景:nlS28资讯网——每日最新资讯28at.com

  1. 首先,a 基于 AB 进行开发。
  2. 随后,需求 b 基于 AB 中的 B 部分展开。
  3. 原本计划发布的 a 推迟了,导致 b 希望尽早发布。
  4. 此时,人们希望将 AB 拆分为 A 和 B 的最小改动,让 b 从 B 进行 rebase。
  5. 最后,我们可以以最小影响发布 b + B。

图片图片nlS28资讯网——每日最新资讯28at.com

在这个过程中,git 的操作显得不那么友好,提交是线性维度的。要更好地控制 git,只能开启新分支,而若要从中间拆分分支,则需要手动处理大量后续节点。sapling 就在这方面提供了 stack 工作流的支持。nlS28资讯网——每日最新资讯28at.com

  1. 仅关注相关仓库和提交,无关提交不显示无关仓库甚至无需下载。
  2. 本地分支甚至无需命名,全自动化管理,自然也省去了暂存区。
  3. 无需使用 rebase,而是提供了 split fold 等操作,遵循一个命令只完成一个任务且能 undo 的思路,精心设计。
  4. 增加了 git 所不具备的变更记录,便于进行自动化操作,例如,在 A-B-C 提交中,将 A 合入 master。sapling 能根据新增的 A-master 记录,自动将 B-C rebase 到 master。

在多人合作开发中,很多团队可能无法直接进入主干开发模式,更多的情况是:nlS28资讯网——每日最新资讯28at.com

  1. 基建 AB 需要进一步拆分为更多层级,以合理维护依赖链。
  2. 由于一直未合入,新需求 c 加入,需要从 AB 再次拆分为依赖 AB-C 的复杂形式。
  3. 同样,由于无法合入,a、b、c 均需单独提测。此时,git 中很可能面临数百个提交、数千个变更的混乱局面,几乎失控。若要坚持多个分支 rebase,每次更新链路需执行数十甚至上百个命令。
  4. sapling 针对这种情况进行了专门设计,实现单个链路自动化 rebase,code review、合并、测试等环节优雅无缝!

图片图片nlS28资讯网——每日最新资讯28at.com

最后,如果 sapling 对你来说改动过大(暂不兼容 gitlab),可以尝试另一个开源项目 git town,它也是 stack 工作流的一部分。nlS28资讯网——每日最新资讯28at.com

https://www.highflux.io/blog/highflux-method https://sapling-scm.com/docs/introduction/differences-git https://www.git-town.com/nlS28资讯网——每日最新资讯28at.com


nlS28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-35284-0.htmlGit 难用?有救!

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 2023年,推荐十个有用的CSS在线生产力工具,让你事半功倍

下一篇: 一篇学会用 KEDA 根据工作负载进行快速扩容

标签:
  • 热门焦点
  • 卢伟冰长文解析K60至尊版 对Redmi有着里程碑式的意义

    在今天的Redmi后性能时代战略发布会结束之后,Redmi总经理卢伟冰又带来了一篇长文,详解了为什么 Redmi 要开启后性能时代?为什么选择和 MediaTek、Pixelworks 深度合作?以及后性
  • Redmi Buds 4开箱简评:才199还有降噪 可以无脑入

    在上个月举办的Redmi Note11T Pro系列新机发布会上,除了两款手机新品之外,Redmi还带来了两款TWS真无线蓝牙耳机产品,Redmi Buds 4和Redmi Buds 4 Pro,此前我们在Redmi Note11T
  • 2023年Q2用户偏好榜:12+256G版本成新主流

    3月份的性能榜、性价比榜和好评榜之后,就要轮到2023年的第二季度偏好榜了,上半年的新机潮已经过去,最明显的肯定就是大内存和存储的机型了,另外部分中端机也取消了屏幕塑料支架
  • 印度登月最关键一步!月船三号今晚进入环月轨道

    8月5日消息,据印度官方消息,月船三号将于北京时间今晚21时30分左右开始近月制动进入环月轨道。这是该探测器能够成功的最关键步骤之一,如果成功将开始围
  • Rust中的高吞吐量流处理

    作者 | Noz编译 | 王瑞平本篇文章主要介绍了Rust中流处理的概念、方法和优化。作者不仅介绍了流处理的基本概念以及Rust中常用的流处理库,还使用这些库实现了一个流处理程序
  • .NET 程序的 GDI 句柄泄露的再反思

    一、背景1. 讲故事上个月我写过一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,当时用的是 GDIView + WinDbg 把问题搞定,前者用来定位泄露资源,后者用来定位泄露代码,后面有朋友反
  • Python异步IO编程的进程/线程通信实现

    这篇文章再讲3种方式,同时讲4中进程间通信的方式一、 Python 中线程间通信的实现方式共享变量共享变量是多个线程可以共同访问的变量。在Python中,可以使用threading模块中的L
  • 年轻人的“职场羞耻感”,无处不在

    作者:冯晓亭 陶 淘 李 欣 张 琳 马舒叶来源:燃次元“人在职场,应该选择什么样的着装?”近日,在网络上,一个与着装相关的帖子引发关注,在该帖子里,一位在高级写字楼亚洲金
  • 华为Mate 60系列用上可变灵动岛:正式版体验将会更出色

    这段时间以来,关于华为新旗舰的爆料日渐密集。据此前多方爆料,今年华为将开始恢复一年双旗舰战略,除上半年推出的P60系列外,往年下半年的Mate系列也将
Top