只合并线上某一个提交到当前分支,用 git cherry-pick,不要用 merge。下面给你完整、可直接照抄的步骤。


一、流程(本地操作,最终推到线上)

1. 先拉最新代码、切到目标分支

# 拉取线上所有分支最新信息
git fetch origin

# 切换到你要“合入”的分支(比如 main / master)
git checkout main

2. 找到线上那个提交的 hash

查看目标分支(比如 feature/xxx)的提交:

git log --oneline origin/feature/xxx

输出类似:

a1b2c3d 修复核销bug   ← 你要的这一条
e4f5g6h 优化列表样式
...

复制你需要的那个 7位 hash(a1b2c3d)

3. 把这一个提交“摘”到当前分支

git cherry-pick a1b2c3d
  • 成功:自动生成一个新 commit(hash 和线上那个不一样,但代码改动完全一样)。
  • 有冲突:会停下来让你解决冲突。

4. 冲突怎么处理(常见)

# 1. 手动改完冲突文件后
git add .

# 2. 继续 cherry-pick
git cherry-pick --continue

如果搞砸了想放弃:

git cherry-pick --abort

5. 推到线上

git push origin main

二、常用进阶

一次 pick 多个不连续提交

git cherry-pick hash1 hash2 hash3

pick 一个连续区间(含首尾)

git cherry-pick startHash^..endHash

只把代码拿过来、不自动提交(便于自己改)

git cherry-pick -n a1b2c3d

一句话总结:fetch → 切目标分支 → log 找 hash → cherry-pick → push

一、MySQL 重命名表

语法

-- 方式1(通用)
ALTER TABLE 旧表名 RENAME TO 新表名;

-- 方式2(跨库也可用,推荐)
RENAME TABLE 旧表名 TO 新表名;

示例

原表 user,改名为 user_old

ALTER TABLE `user` RENAME TO `user_old`;

二、复制原表结构(空表,仅结构、索引、字段,不复制数据

-- 语法
CREATE TABLE 新表名 LIKE 源表名;

-- 示例:创建和 user_old 结构完全一致的新表 user
CREATE TABLE `user` LIKE `user_old`;

三、如果需要连数据一起复制(结构+数据全量克隆)

-- 结构 + 数据 一起复制
CREATE TABLE 新表名 SELECT * FROM 源表名;

完整流程示例(常用场景:旧表改名 + 新建同结构空表)

-- 1. 把原有业务表改名备份
ALTER TABLE `test_table` RENAME TO `test_table_bak`;

-- 2. 创建一张和原表结构完全相同的新空表
CREATE TABLE `test_table` LIKE `test_table_bak`;

补充说明

  1. LIKE 方式会完整复制字段、数据类型、主键、索引、默认值、注释,不会复制数据;
  2. 执行前建议先锁表/停业务,避免数据写入导致不一致;
  3. 表名建议用反引号 ` 包裹,防止和关键字冲突。

关于 ALTER TABLE 和 RENAME TABLE 这两种语法的区别,速度和原理是否一样:

-- 方式1(通用)
ALTER TABLE 旧表名 RENAME TO 新表名;

-- 方式2(跨库也可用,推荐)

两种表改名语法:区别、原理、速度

一、核心结论

底层原理、执行速度基本一致,都是元数据级操作(瞬间完成,不改动表数据),主要差异在语法能力、使用场景、语法规范


二、详细区别

1. 语法与标准归属

  1. ALTER TABLE 旧名 RENAME TO 新名

    • 属于 ALTER TABLE 子语法,是 SQL 标准衍生写法。
    • 仅支持单表改名不能跨数据库
    • 语法语义:修改表的名称属性。
  2. RENAME TABLE 旧名 TO 新名

    • MySQL 专属扩展语法,功能更强。
    • 支持单表 / 多表批量改名跨数据库迁移表
    • 多表示例:

      RENAME TABLE t1 TO t1_bak, t2 TO t2_bak;
    • 跨库示例(把 db1.tbl 移到 db2 并重命名):

      RENAME TABLE db1.tbl TO db2.tbl_new;

2. 权限要求

  • 两者都需要原表的 ALTER 权限。
  • 跨库使用 RENAME TABLE 时,需要目标库的 CREATE 权限

3. 锁机制 & 并发(InnoDB)

两者在 InnoDB 下行为一致:

  • 均为元数据操作,仅修改数据字典、文件映射,不拷贝行数据
  • 执行时会加 MDL 元数据锁,短时间阻塞 DDL/DML,锁持有时间极短。
  • 不存在 IO 读写,速度完全相同,都是毫秒级。

4. 兼容性

  • ALTER TABLE ... RENAME:兼容更多数据库(MariaDB、部分其他SQL库),通用性更好。
  • RENAME TABLE纯 MySQL 专用,其他数据库不识别。

三、原理(完全一致)

MySQL 表名本质只是数据字典里的标识,同时对应磁盘上 .frm.ibd 等文件名称:

  1. 两种语法都不遍历、不迁移表内数据
  2. 仅修改:数据字典记录 + 磁盘上表相关文件名称;
  3. InnoDB 共享表空间/独立表空间,行为无区别。

四、使用场景建议

  1. 同库、单表、追求通用兼容 → 用 ALTER TABLE ... RENAME TO
  2. 跨库、批量改表名、MySQL 专属环境 → 优先 RENAME TABLE
  3. 速度不用纠结:二者性能无差异
    RENAME TABLE 旧表名 TO 新表名;

实战:备份日志表并创建新的日志表,用到变量、动态SQL执行

-- 定义变量:拼接 表名_年月日
SET @old_tb = 'sp_log';
SET @suffix = DATE_FORMAT(CURDATE(), '%Y%m%d');
SET @bak_tb = CONCAT(@old_tb, '_', @suffix);

-- 2. 第一条:重命名旧表
SET @sql1 = CONCAT('RENAME TABLE `', @old_tb, '` TO `', @bak_tb, '`;');
PREPARE stmt1 FROM @sql1;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;

-- 3. 第二条:新建同结构空表
SET @sql2 = CONCAT('CREATE TABLE `', @old_tb, '` LIKE `', @bak_tb, '`;');
PREPARE stmt2 FROM @sql2;
EXECUTE stmt2;
DEALLOCATE PREPARE stmt2;

如果你尝试将两条SQL放到一个预定义语句中执行,将喜提一个报错:
报错原因
MySQL 一条预处理语句里不能同时放两条独立 SQL(RENAME + CREATE 写在同一个字符串里),解析时直接语法报错。
预处理 PREPARE 单次只支持单条 SQL 语句。

  SET @sql = CONCAT(
    'RENAME TABLE `', @old_tb, '` TO `', @bak_tb, '`;',
    'CREATE TABLE `', @old_tb, '` LIKE `', @bak_tb, '`;'
  );

  PREPARE stmt FROM @sql;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;

先把结论说清楚:
Edge 149+(2026 最新版)已经把“关闭圆角”的官方开关和 flags 都删掉了。下面给你目前能用的几种办法,从简单到进阶。


一、先看你有没有“外观 → 圆角”开关(旧版有效)

  1. 打开 Edge → 右上角「⋯」→ 设置
  2. 左侧 外观
  3. 找找有没有 圆角 / 全新外观 开关,有的话直接关掉、重启即可。

新版(149.x)这里已经没有了。


二、edge://flags 关闭圆角(149 以前有效,新版已移除)

  1. 地址栏输入:

    edge://flags
  2. 搜索:

    rounded
  3. 找到 Microsoft Edge rounded corners,设为 Disabled
  4. 点右下角 Restart 重启浏览器。

⚠️ 149.0.4022.52+ 这个 flag 已经被微软删掉,找不到了


三、最新版临时方案:用启动参数关闭新外观(有效

  1. 关闭所有 Edge 窗口
  2. 找到桌面/开始菜单的 Edge 图标 → 右键 → 属性
  3. 在「目标」框最后,加一个空格,再粘贴:

    --disable-features=msFeatureGroupNewLookAndFeelHoldout

    示例:

    "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" --disable-features=msFeatureGroupNewLookAndFeelHoldout
  4. 确定,重新打开 Edge。

这个能把新的圆角/白边外观关掉,恢复接近直角的样式。


四、终极方案(长期)

微软从 149 开始强制圆角设计,后续可能连启动参数也会失效。
你可以:

  • 用上面的启动参数临时解决
  • 或者改用 Chrome / 国产浏览器(没有这个强制圆角)
  • 在 Edge 里按 Alt+Shift+I 反馈,要求加回开关

Scrapling(d4vinci/Scrapling)项目详解

一句话:一体化智能Python爬虫库,主打【自适应防改版+内置反爬+JS渲染三合一】,替代 requests+bs4+playwright+反爬工具组合

一、项目是做什么的

核心定位

原生整合请求、反爬绕过、JS渲染、DOM解析、自适应选择器、分布式爬虫全套能力,不用手动拼装多类第三方库,解决两大爬虫痛点:

  1. 网站改版选择器失效:独有自适应算法,首次抓取记录元素特征,后续页面改class/HTML结构,开启adaptive=True自动重新定位数据,不用改爬虫代码;
  2. Cloudflare、人机验证、指纹封禁:内置三层请求引擎,开箱绕过主流反爬,不用额外配置代理指纹、无头浏览器隐藏特征。

三层抓取引擎(按需切换)

引擎底层能力适用场景
Fetchercurl_cffiTLS指纹伪装、普通http静态页面、无反爬站点(最快)
StealthyFetcherCamoufox魔改火狐原生过Cloudflare Turnstile、浏览器指纹带CF防护、轻量动态页面
DynamicFetcherPlaywright-Chromium完整JS渲染、SPA异步加载前端渲染、大量AJAX网站

附加能力

  1. 解析兼容:同时支持CSS/XPath/bs4语法,写法贴近BeautifulSoup、Scrapy Parsel,迁移成本极低;解析速度约bs4的800倍,对标lxml/Scrapy性能;
  2. 类Scrapy爬虫骨架:Spider爬虫类、异步并发、断点续爬、自动代理轮换、分页调度,可快速做全站爬虫;
  3. CLI命令行:不用写Python代码,终端直接scrapling extract 网址 输出.md导出数据;自带scrapling shell交互式调试;
  4. MCP协议接入AI:可对接Cursor/Claude等AI Agent,和你前面看的agency-agents-zh智能体项目联动,AI自动调用爬虫抓网页数据。

二、使用门槛(分3档,新手友好度高)

环境底线:Python≥3.10,Windows/Mac/Linux全平台可用

1、零代码/命令行使用(门槛★☆☆☆☆,零基础)

只用终端命令,不用写Python:

# 最简安装
pip install scrapling
# 全功能安装(含浏览器、反爬全套)
pip install "scrapling[all]"
# 自动下载依赖浏览器
scrapling install
# 终端直接爬取导出
scrapling extract https://xxx.com save.md

适合:非开发,临时抓页面内容、导出表格

2、单行代码简易爬虫(门槛★★☆☆☆,会基础Python即可)

几行代码完成带反爬+自适应抓取,兼容老bs4写法:

from scrapling.fetchers import StealthyFetcher
# 开启自适应,网站改版自动找元素
page = StealthyFetcher.fetch("目标网址",adaptive=True)
# css选择器提取,就算页面改样式也能抓到
titles = page.css(".title",auto_save=True)

适合:爬虫新手、日常零散数据抓取,替代requests+bs4

3、大型全站爬虫/二次开发(门槛★★★☆☆,有爬虫基础)

用内置Spider写批量并发爬虫、配置代理池、自定义自适应规则、对接私有代理服务,需要懂异步、爬虫调度,对标Scrapy学习成本,但配置更简单。

三、优缺点&适用人群

优点

  1. 不用折腾环境:一键装好浏览器与反爬依赖,告别Playwright驱动、cf-bypass环境配置难题;
  2. 维护成本极低:自适应选择器大幅减少因前端改版反复改代码;
  3. 全场景通吃:静态/动态/高反爬网站一套库搞定。

    缺点

  4. 全量安装会自动下载Chromium/Firefox二进制包,国内网络偶尔下载缓慢;
  5. 内存开销:DynamicFetcher启动真实浏览器,批量爬取占用高于纯http库。

适用人群

  1. 爬虫新手:不想折腾多库组合,一套代码抓各类网站;
  2. 数据运营:用CLI快速抓取电商、资讯数据;
  3. AI开发者:搭配agency-agents智能体,让AI自动联网爬取实时网页;
  4. 爬虫工程师:替换老旧requests+selenium项目,降低维护成本。

补充:和你上一个项目联动

agency-agents-zh里的爬虫工程师Agent可以直接调用Scrapling,AI自动生成爬虫代码、执行网页抓取,是当下AI+爬虫主流搭配方案。