惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Proofpoint News Feed
L
Lohrmann on Cybersecurity
S
Secure Thoughts
Attack and Defense Labs
Attack and Defense Labs
人人都是产品经理
人人都是产品经理
Stack Overflow Blog
Stack Overflow Blog
W
WeLiveSecurity
O
OpenAI News
SecWiki News
SecWiki News
博客园 - Franky
NISL@THU
NISL@THU
Microsoft Azure Blog
Microsoft Azure Blog
T
Tor Project blog
Microsoft Security Blog
Microsoft Security Blog
aimingoo的专栏
aimingoo的专栏
Security Latest
Security Latest
H
Hacker News: Front Page
Google Online Security Blog
Google Online Security Blog
P
Privacy & Cybersecurity Law Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
D
Darknet – Hacking Tools, Hacker News & Cyber Security
月光博客
月光博客
李成银的技术随笔
Spread Privacy
Spread Privacy
F
Full Disclosure
F
Fortinet All Blogs
T
The Exploit Database - CXSecurity.com
Vercel News
Vercel News
AWS News Blog
AWS News Blog
WordPress大学
WordPress大学
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
V
Visual Studio Blog
J
Java Code Geeks
博客园 - 三生石上(FineUI控件)
G
Google Developers Blog
云风的 BLOG
云风的 BLOG
博客园 - 司徒正美
Engineering at Meta
Engineering at Meta
Last Week in AI
Last Week in AI
P
Palo Alto Networks Blog
宝玉的分享
宝玉的分享
T
True Tiger Recordings
N
News and Events Feed by Topic
酷 壳 – CoolShell
酷 壳 – CoolShell
Cisco Talos Blog
Cisco Talos Blog
N
News | PayPal Newsroom
S
SegmentFault 最新的问题
Jina AI
Jina AI

博客园 - 邗影

UBI的覆盖写和擦除 DTSI 多个模块共用同一个 GPIO 引脚冲突 问题汇总 debug比release程序启动的快 关于CPU占用优先级的调整 关于蜂鸣器发声 麦序与声源定位 关于squashfs压缩挂载 软连接生成 线程退出未定义行为 linux文件查找 C语言弱函数 数据传输报错port unreachable D3D11绘制三角形 关于延迟测试 v4l2检测 关于数据库的性能 流媒体小记包含一些面试问题 v4l2视频采集 流媒体ZLM配置vscode远程开发 关于SPS中的帧率问题 Linux编译问题 SSl冲突问题 D3D初始化窗口显示 关于线程池
如何去掉merge
邗影 · 2026-05-21 · via 博客园 - 邗影

一、本次多余 Merge 的完整产生过程(我的操作全程还原)

1. 前置状态

我本地有自己的代码改动,并且已经本地 commit 提交,此时本地提交历史领先远程分支。

2. 问题操作:直接使用 git pull 更新代码

我准备推送代码前,为了同步远程最新代码,没有使用 rebase,而是直接执行了普通 git pull。

3. 触发分叉产生 Merge

此时远程当前分支有新的更新提交,本地有自己的新提交,本地与远程历史形成两条分叉代码线

普通 git pull 的机制:遇到分叉不会自动叠平代码,而是自动生成一条新的 Merge 合并提交,强行把两边代码合并到一起。

4. 最终结果

分支历史出现分叉、多出一条无用 Merge 记录,分支历史变乱,后续提交流线不纯净,影响合码、回溯、代码规整性。

image

 图片上前两笔是我的,第三笔是L的;

git log --oneline --graph:显示:

*   xxxxxxxx 【合并提交M 我】
|\
| * b7eea90 【 L】
* 585c76f 【 U 我】

先使用reset+push的方法尝试:发现出现了对方提交的代码的丢失;reset一笔,丢失了merge和L的提交,reset 两笔直接我和L的都丢失了;

二、为什么普通方法删不掉 Merge,还会丢代码?(所有翻车原因)-------使用reset+push的方法;

1. 使用 git reset HEAD~1 翻车原因

分支结构:Merge(顶部)包裹两条分叉,一条是远程更新提交,一条是我的本地提交。

HEAD~1 只会退回 Merge 的上一级,也就是停留在「我的旧提交」,直接丢失远程所有更新代码

2. 使用 git reset HEAD~2 翻车原因

一次性回退两步,直接删掉我的提交 + 远程更新提交,所有新增代码全部清空

三、

正确思路:重构线性历史

1. 先回到「远程干净更新节点」(保留远程最新代码)此时有Merge ,L, U;

2.切到了的那笔commit上

3. 再把自己的改动重新叠加在最上方

3. 最终历史变成:远程更新提交个人修改提交

4. 彻底干掉 Merge、无分叉、两边代码全部保留、只改动自己分支

四、标准修复步骤(最终可落地正确流程)

1. 紧急兜底:恢复本地与远程个人分支一致


git checkout    个人分支名
git fetch origin
git reset --hard origin/个人分支名

2. 查看分叉结构,拿到两个关键哈希


git log --oneline --graph

L = 远程更新提交哈希
U = 个人修改提交哈希

*   xxxxxxxx 【合并提交M】
|\
| * b7ee890 【L】
* 585cb6f 【 U】

3. 重置基线到远程更新节点(丢掉Merge,保留远程代码)

在本地切到L的那笔提交上(这个并不是分支的意义,是L开发的时候他自己的分叉)
git reset --hard L

4. 叠加自己的改动(不会空、不会丢)

把我的这笔修改pick到L的分叉上
git cherry-pick U

5. 强推覆盖自己分支(仅改动个人分支)


git push -f

五、彻底根治:以后再也不产生 Merge

以后本地有代码、需要同步远程更新,禁止直接 git pull

统一使用:


git pull --rebase

效果:自动线性平铺代码,远程代码在前、我的代码在后,永远不会生成 Merge 提交