git commitid向多个分支提交代码_40分钟git从入门到放弃(苦笑)

7338dbb86a076c5d75e05cc68d664dc6.png

有这么一个段子...

老杨一推代码, 所有的开发同事便都看着他笑, 有的叫道, “ 老杨, 你又把代码合丢了!” 他不回答, 对产品说, “ 追加两个需求, 只做性能优化。” 便排出一台MacBook Pro。 他们又故意的高声嚷道, “ 你推错分支了!” 老杨睁大眼睛说, “ 你怎么这样凭空污人清白……”, “ 什么清白? 我前天亲眼见你写Bug把流水线搞挂, 又改崩生产代码“。 老杨便涨红了脸, 额上的青筋条条绽出, 争辩道, “ 流水线报错不算错, 合代码挂掉的事能叫Bug吗?” 接连便是难懂的话, 什么“ Merge大法好, GitFlow卍解”, 什么“ 拉代码不需要Rebase” 之类, 引得众人都哄笑起来: 店内外充满了快活的空气。

用 git 的, 谁没合丢过代码呢? (反正我是合丢过...)

好, 痛定思痛, 我决定从原理上理解Git, 所以决定写下这篇文章(才不会说是因为buddy叫我准备一场针对 git 的 session).

PS: git官网上有看都看不完的长篇大论, 甚至有人专门为理解git的一种workflow出书...这些都说明"看这篇文章就想把git搞透彻是不可能的"(因为写文章的人都没有把git搞透彻(再次苦笑)).

So: 这篇文章不会是一个体系完善的Git教程, 只会针对性地从原理上理解一些我们常用的Git命令, 最终目标就是能够在基本的多人合作的场景下正常工作, 同时对于复杂的场景能有用于检索资料的先验知识.

目录

  • 目录
  • Git的那些概念
    • Git的本质是什么?
    • Git中存储的对象
      • 1. blob对象
      • 2. tree对象
      • 3. commit对象
      • ref(引用)
  • Git的那些常用操作
    • file-level
    • commit/branch-level
    • repo-level
  • Git的那些冲突
    • 出现冲突的可能情形
    • 规避冲突的优选操作
    • 其他的奇技淫巧
      • 别名
      • 子模块(submodule)

Git的那些概念

Git的本质是什么?

Git的本质其实是一个内容寻址(content-addressable)文件系统, 它的核心部分是一个简单的键值对数据库。我们可以向该数据库写入值(object), 它会返回一个键(object的引用地址, SHA-1字符串), 通过该键可以在任意时刻再次检索值. 我们所操作的版本控制, 其实就是不断地向这个文件系统写入操作日志.

那么这些被写入的操作日志是什么呢?

Git中存储的对象

1. blob对象

对应的值是单个文件内容的快照, 这个快照不包括文件名。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值