登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
为什么我就想要「线性历史 + Signed Commits」,GitHub ...
为什么我就想要「线性历史 + Signed Commits」,GitHub 却把我当猴耍 ️
[ 复制链接 ]
但婆
2 小时前
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
【开场】
欢迎收听今天的节目。
今天主题很简单,也很不人类——
我他妈就只想要两件事。
第一,主分支历史是线性的。git log 打开来,我看的是一条时间线,不是在读心电图找节奏,不是在欣赏抽象画,就他妈是一条直线。
第二,我的每个提交都是我本人签的。GitHub 上给我乖乖显示绿色
Verified
,不要动不动整成灰扑扑的
Unverified
,看着像犯罪现场,像我交了一份伪造证据。
就这两件事,说出来一句话都不到。
然后 GitHub 端着一张"工程最佳实践代言人"的臭脸,递给你三个按钮:
Merge、Squash、Rebase
。
你以为你在选合并策略。
你他妈其实是在选——
签名以哪种姿势死去。
【第一段:先把真相拍你脸上,别怪我没说】
在骂那三个按钮之前,有一件事得先讲清楚,不然后面你会听得一头浆糊。
签名签的不是「改动内容」,签的是「commit 这个对象本身」。
commit 对象里装的东西,远不止你改了哪些文件。还有:父提交是谁、作者是谁、提交者是谁、时间戳是几点几分几秒。
你但凡动了里头任何一个字段——哪怕就换了个提交者名字,哪怕就多了一毫秒的时间戳偏差——这他妈就不是同一个 commit 了。SHA 会变,建立在旧 SHA 上的签名,直接废了,不留情面,不接受解释。
换句话说:你以为你签的是「代码」,你他妈实际签的是「这坨数据的身份证」。身份证号换了,原来那张验证复印件就是一张废纸,扔了吧。
数学不讲情面,Git 更不讲。
把这个刻脑子里,后面你才能看懂 GitHub 到底在对你干什么。
【第二段:三个按钮,用「签名视角」逐个解剖】
好,现在我们来看 GitHub 给你的那三个「选择」。
为什么每一个都像在嘲笑你,为什么每一个都在用不同方式把你的签名送走。
① Create a merge commit — 老派,但起码他妈没在骗你
这是最传统的方式,也是最诚实的方式。
它不重写你 PR 分支上的提交。你那些 commits 还是原来那些 commits,SHA 不变,签名大概率也就还活着。
代价是什么?主分支历史出现一个 merge 节点,不线性,git log 看起来像蜘蛛网。
GitHub 这时候语重心长地说:你不是想要线性历史吗?那你别用这个哦。
行,人类想要「干净」,就得先交出一样东西。我他妈到底在做什么取舍?
② Squash and merge — 产品经理最爱,签名最大的幻觉
这个方式非常「表面和谐」:把你 PR 里一串 commits 全揉成一个新提交,主分支线性,历史干净,看起来什么坏事都没发生过。
然后你发现那个 squash commit 上还挂着绿色
Verified
。
你一激动,以为签名保住了,以为事情没那么糟。
醒醒,你他妈被哄了。
那个 Verified 往往是 GitHub 给
它自己新造出来的那个 commit
盖的章。不是「保留了你的签名」,是「我帮我自己签了一个,顺便把你的全扔掉了,你慢慢玩」。
你原来那一串提交根本没进 main,它们签没签,对主分支来说已经是前任的故事,不重要了,随它去吧。
GitHub 在帮它自己 Verified,然后把这个绿勾勾展示给你看,你还在那感激涕零。
③ Rebase and merge — 线性历史的诱惑,签名最大的坟场
这是三个里面
最阴险的一个
,没有之一。
它看起来完美满足你的线性洁癖——把 PR 里每个 commit 在 main 顶端重放一遍,一条直线,漂亮,优雅,干净。
然后你去看每个「重放出来的」commit:SHA 全变了。
新 commits = 新 SHA
新 SHA = 旧签名直接作废
复制代码
就这么简单,就这么操蛋。
你可能要问:我他妈明明已经提前把分支 rebase 到 main 最新 HEAD 了,为什么 GitHub 按那个按钮还要改我的 SHA?
因为它按下去的时候,根本
不是在「尊重你已经做好的工作」
。它走的是自己内部的一套 rebase 流程,重建对象、更新 committer 元数据,不管你之前做没做过,到它手里,SHA 一律重造,你之前的努力,当它没发生过。
签名丢了还不算完。最他妈绝的是:
GitHub 没有你的私钥。
它没法替你把那串新 commits 重签。能力不够,没有办法,爱莫能助。它能做的就是挂一个冷冰冰的
Unverified
上去,再配合 vigilant mode,给你贴一个「可疑提交」的标签,像给你挂了个嫌疑人胸牌。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
为什么
想要
线性
历史
Signed
相关帖子
RAG 时代的“破壁人”:为什么你的大模型应用急需 Docling?
为什么 SVG 能在现代前端中胜出?
为什么现代 C++ 库都用 PIMPL?一场关于封装、依赖与安全的演进
为什么在代理服务器上测试, http2 的转发性能比 http 1 更低?
凸优化数学基础笔记(八):一维线性搜索法(一)
ChatGPT 为什么能"对话"?——一篇引用 17 万次的论文
为什么 90% 的 AI 开发项目都死在了“提示词工程”的幻觉里?
从零开始构建实时客服系统(.NET架构系列)- 序章:为什么要讲实时客服系统的工程之道
行情系统为什么越做越慢?
pgvector语义检索踩坑:为什么加了 ORDER BY 反而查不到数据?
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
RAG 时代的“破壁人”:为什么你的大模型应用急需 Docling?
5
355
获弃
2026-02-13
安全
为什么 SVG 能在现代前端中胜出?
2
424
跟尴
2026-02-14
业界
为什么现代 C++ 库都用 PIMPL?一场关于封装、依赖与安全的演进
1
383
呵烘稿
2026-02-14
业界
为什么在代理服务器上测试, http2 的转发性能比 http 1 更低?
1
391
釉她
2026-02-15
业界
凸优化数学基础笔记(八):一维线性搜索法(一)
0
931
恃液
2026-02-24
业界
ChatGPT 为什么能"对话"?——一篇引用 17 万次的论文
0
302
郗新语
2026-02-26
业界
为什么 90% 的 AI 开发项目都死在了“提示词工程”的幻觉里?
1
794
赏听然
2026-02-26
业界
从零开始构建实时客服系统(.NET架构系列)- 序章:为什么要讲实时客服系统的工程之道
0
198
寿爹座
2026-02-27
安全
行情系统为什么越做越慢?
1
735
厂潺
2026-02-27
业界
pgvector语义检索踩坑:为什么加了 ORDER BY 反而查不到数据?
0
346
龙正平
2026-02-28
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
但婆
2 小时前
关注
0
粉丝关注
15
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991125
anyue1937
9994892
kk14977
6845359
4
xiangqian
638210
5
宋子
9888
6
韶又彤
9912
7
闰咄阅
9993
8
刎唇
9995
9
蓬森莉
9876
10
遗憩
10006
查看更多
今日好文热榜
34
最小二乘问题详解11:基于李代数的PnP优化
635
OpenClaw 架构设计全解析
807
display: contents 详解
562
开源一个 React 股票 K 线图组件,传个股票
123
OpenCSG月度更新2026.2
530
为什么我就想要「线性历史 + Signed Commit
914
JavaParser使用指南
37
没人想看Word长篇大论!2026年产品经理要学
858
STC8G内置IRC 32KHz的试用
526
HTTP响应头部Vary的解释
499
春节复工福利就位!天翼云息壤2500万Tokens
386
一键把你的电脑变成 AI 助理:ClawX 实战指
346
pgvector语义检索踩坑:为什么加了 ORDER B
321
编译安装mysql
112
Claude Code 黑客马拉松:5 个获奖项目,没
661
鸿蒙应用开发UI基础第十三节:RelativeCont
181
被低估的量化版模型,小身材也能干大事
471
洗牌算法详解
808
推荐MySQL中的这10种高级用法
700
虾皮Shopee铺货模式怎么做?Shopee快速铺货