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

推荐订阅源

C
CERT Recently Published Vulnerability Notes
U
Unit 42
T
The Blog of Author Tim Ferriss
H
Hackread – Cybersecurity News, Data Breaches, AI and More
B
Blog RSS Feed
Microsoft Azure Blog
Microsoft Azure Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
S
Securelist
L
Lohrmann on Cybersecurity
Blog — PlanetScale
Blog — PlanetScale
Recorded Future
Recorded Future
D
DataBreaches.Net
Spread Privacy
Spread Privacy
T
Threat Research - Cisco Blogs
I
Intezer
P
Palo Alto Networks Blog
Simon Willison's Weblog
Simon Willison's Weblog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
I
InfoQ
宝玉的分享
宝玉的分享
Security Latest
Security Latest
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threatpost
Cisco Talos Blog
Cisco Talos Blog
P
Proofpoint News Feed
博客园 - 司徒正美
H
Hacker News: Front Page
Y
Y Combinator Blog
爱范儿
爱范儿
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
NISL@THU
NISL@THU
月光博客
月光博客
有赞技术团队
有赞技术团队
Cloudbric
Cloudbric
酷 壳 – CoolShell
酷 壳 – CoolShell
G
Google Developers Blog
A
Arctic Wolf
博客园 - 【当耐特】
W
WeLiveSecurity
V
Visual Studio Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
V
V2EX
C
Cyber Attacks, Cyber Crime and Cyber Security
S
SegmentFault 最新的问题
The GitHub Blog
The GitHub Blog
The Cloudflare Blog
Stack Overflow Blog
Stack Overflow Blog

git

请教一个诡异的 git 问题 - V2EX 有一个 git 仓库合并问题,不知道怎么办才好 分析一个技巧让同事不知道我使用了 ai : git 忽略本地改动文件,实现不提交 Rebased, 一个 git 客户端 发现一个邪修快速清理 Git 项目里面空文件夹的方法🤡 不知道有没有什么其他标准做法. - V2EX zig 写的 100kb 的 wasm 可以 http 读写任意 git 仓库 - V2EX 有人把 IDEA 的 git 客户端做出来了 问个关于 rebase 和 github pr 的奇怪的问题 - V2EX idea 同款 git 客户端求推荐 - V2EX 有没有类似 JB 家的 Git 管理工具 - V2EX 大家自己的代码都是放在哪儿 - V2EX 分享一个在 Linux 上编译静态 Git 二进制的项目 - V2EX 上亿的 git 仓库如何做冷热存储分离呢 - V2EX 发现了一个极度臃肿的项目 - V2EX 有什么支持直接连接远程主机 git 仓库的 GUI 工具吗 - V2EX KFCode 官网上线,做好用、靠谱、有趣的 Git 托管平台 - V2EX git 工作流,大家现在用的什么样的? - V2EX 很奇怪的一个现象,有没人知道是怎么回事,所有 LLM 都说 100%不会出现 - V2EX 我宣布,最好的 git 客户端是腾讯家的 ugit - V2EX Fork 付费版有什么不同? - V2EX 一位高级工程师的 GIT 需要熟悉到什么程度? - V2EX 已经 push 到远程仓库的提交,如何修改某个用户的所有提交的邮箱啊 - V2EX [求助下] 关于代码同步问题 - V2EX 一直不理解 Windows 下 git 的这个逻辑,我自己 clone 的仓库还不能删了? rm -force 也不行 - V2EX 分享一个 Git 存储库治理利器 - hot - V2EX 代码有没有必要备份到多个远程仓库?比如 github 和 codeup。有必要的话最好怎么备份? - V2EX 请教 git 里怎么删除记录 - V2EX git 中如何将子分支的多个提交作为一个提交合并到主分支? - V2EX git 切换分支问题 - V2EX git 各种命令执行很慢是什么原因导致的? - V2EX 有没有大佬指导一下 git 问题 - V2EX git remotes 分支克隆 - V2EX 两处修改需要分开提交吗? - V2EX 问个 Git 基操:怎么样复制一个文件,能保持历史记录? - V2EX Linux 的 Ubuntu 系统有类似 Sourcetree 或者 fork 这种 git 图形化操作的客户端工具吗 - V2EX 关于刚刚 git 的问题描述的不清楚,不能编辑主题了,重新发下问题: git 如何对比服务器上最新的代码和本地的区别? git diff 对比和我预想不一样 - V2EX git 新手求教: git 如何对比服务器上最新的代码和本地的区别?不是本地远端和本地 working。 svn 可以使用 show log,直接对比,调用 beyond compare 很方便。 - V2EX 对上游提 pr,上游的管理员觉得 pr 里面的功能他不需要或者不满意 - V2EX gitee fork 时继承推送规则是否合理? - V2EX 请教大家一个测试环境代码合并的问题 - V2EX 推送远程仓库导致本地提交记录消失,如何找回 - V2EX 给上游 pr,自己应该先 pr 到自己的 main 分支吗? - V2EX 请教一个开发流程中 GIT 解决冲突的问题 - V2EX 求教:在 fork 的仓库上添加不太可能被 upstream 接受的修改,是不是应该在新开的 branch 上开发? - V2EX 有哪个 git 的 gui 软件。可以像 idea 的 git 管理那样查看文件历史和代码冲突?现在换到了 cursor,但是这边的代码管理个人用的太不习惯了。 - V2EX git clean 还能找回吗 - V2EX 求助 git 自动 merge 丢代码 - V2EX 码云代码自动同步到 github - V2EX 请教大家这样的项目应该要怎么做 git 管理 - V2EX 从本地提交代码到 gitlab 后, diff 异常问题,求大佬解惑 - V2EX 在 Git 中,已知某一个分支的某个 Commit 引入了一个 bug,如何快速确定这个 bug 是经过哪些分支流转到 master 分支的? git rebase 那么重要么??? 如何在 git 提交前将生产版本和开发版本的配置进行区分 开源了个新的版本控制系统 HugeSCM,请 V 友们指导 Git Permission denied 问题求助
请教各位关于 Git 合并的问题 - V2EX
suikaChen · 2025-03-27 · via git

这是一个创建于 444 天前的主题,其中的信息可能已经有所发展或是发生改变。

现在我手头上有一个项目,A 和 B 两个分支,两者都是从 2.0 版本分支衍生出于的,也就是处于同一起点。
两个分支后续独立开发迭代,两者的需求代码最多 10%的相似度。
经过半年的开发之后,现在两者相差 200+个 commit ,500+个更改。

现在产品有需求,需要以 A 分支为基底,将 B 分支的所有内容合入,保证最终分支包含 AB 分支的所有更改。
目前想过分版本合并、以 commit 为单位合并、merge 直接合并、rebase 合并,感觉都不太好,没办法保证最终的合并结果。
各位有没有什么比较好的合并方式?

  • git
  • 合并
  • 分支

    47 条回复    2025-03-29 17:02:07 +08:00

    xiaofsu

    1

    xiaofsu      2025 年 3 月 27 日

    没啥好办法, 相差太大了,抽出来两天搞吧,光看到我就觉得神经要崩溃了。

    EastLord

    2

    EastLord      2025 年 3 月 27 日   ❤️ 1

    感觉跟 git 没关,差异太大,你也合不了吧,手动粘贴复制吧

    calvinHxx

    3

    calvinHxx      2025 年 3 月 27 日

    以 20 commit 作为单位 手动 cheery pick 验证阶段性功能没问题后再 rebase ?

    mangoDB

    4

    mangoDB      2025 年 3 月 27 日

    我觉得只有 merge 合并,然后再解决冲突了。你们公司的开发模式有问题,时间跨度这么大,中途没有任何同步代码的过程,最后还是要苦了自己。

    NessajCN

    5

    NessajCN      2025 年 3 月 27 日   ❤️ 1

    你把所有的合并方式都否了让人咋回答....

    willxiang

    6

    willxiang      2025 年 3 月 27 日

    人工手动迁移代码吧,没人能保证合并过来的代码能正常跑(先不说跑起来,解决冲突估计都一脑袋汗)

    RinGress

    10

    RinGress      2025 年 3 月 27 日

    人工迁移吧。两个分支边对比边改快一点。可能也别想 cherry 了,一个 cherry 一个不吱声。
    我们去年 10 月份 fork 并同时维护两个版本,两个版本之间的功能现在靠人工 diff 合并后手动提交 commit

    KagurazakaNyaa

    11

    KagurazakaNyaa      2025 年 3 月 27 日   ❤️ 2

    建议重新整理需求和功能,然后基于一个最贴近完整版的版本重构开发,参考而不合并之前的代码

    wolfie

    13

    wolfie      2025 年 3 月 27 日

    jetbrains git log ,B 分支 commit 全选,挨个文件 cherry pick 。

    hwdq0012

    14

    hwdq0012      2025 年 3 月 27 日

    冲突就 merge 一次性解决,rebase 冲突了的话,通常需要反复处理同一个位置的冲突,你会崩溃的

    ho121

    15

    ho121      2025 年 3 月 27 日 via Android

    要不,挑一个分支,重写?

    guanzhangzhang

    16

    guanzhangzhang      2025 年 3 月 27 日

    主要是有没有单元测试和 api 测试,不然手动整基本崩了打地鼠一样

    thinkershare

    17

    thinkershare      2025 年 3 月 27 日

    如果写了完整单元测试,没啥大问题,大胆的合并吧。有问题一个文件一个文件解决。合并完了跑单测,有问题再去改实现代码。我们有项目 40 多个不同分支,因为是基于一个项目私有化部署了几十个项目,后来实在没法维护了,也合并过一次,搞了一周左右。

    follower

    18

    follower      2025 年 3 月 27 日

    我只知道用了 rebase 你肯定会想死

    Yuanlaoer

    19

    Yuanlaoer      2025 年 3 月 27 日

    光是这一句想法:“需要以 A 分支为基底,将 B 分支的所有内容合入,保证最终分支包含 AB 分支的所有更改。”
    客观事实上能不能做到还是两说呢。

    v1

    20

    v1      2025 年 3 月 27 日   ❤️ 1

    和双胞胎谈恋爱,你想让大的当成小的,小的变成大的,都没问题,但是你想大小一起的时候,那是不可能的

    suikaChen

    23

    suikaChen      2025 年 3 月 27 日

    目前看下来还是手动按需求来合并比较靠谱一些。
    只是 commit 记录就只能放弃了。

    luckyrayyy

    25

    luckyrayyy      2025 年 3 月 27 日

    差别太大的话,感觉通过 commit 维度或者文件维度都很难操作,不如对照着功能点和代码进行重写逻辑了...能用的代码人工复制过来

    TONYXUELI

    28

    TONYXUELI      2025 年 3 月 27 日

    从 A 分支拉一个新分支 C;
    先试试将 B merge to C,如果冲突太多密密麻麻头疼就取消;
    然后 试试 cherry 命令,根据提交记录慢慢合;

    lanmiao

    29

    lanmiao      2025 年 3 月 27 日

    “相差 200+个 commit ,500+个更改” 其实也没多少代码。
    只要不是让你明天上线,那直接把 B 到 mergeA 或拉个 C 分支再合并都行,然后该改的改,该屏蔽的屏蔽,调通代码转测试就行了。

    red666

    30

    red666      2025 年 3 月 27 日 via Android

    能不能不合并

    lovelylain

    32

    lovelylain      2025 年 3 月 27 日 via Android

    merge ,差异太大就别想着 rebase 和 cherry pick 了

    itechify

    33

    itechify      2025 年 3 月 28 日

    clone 下来试试,A ,B 分支都先各自切出来为 A1 ,B1 分支作为演练。A1 分支在 2.0 后 rebase /squash 合并下成一次提交,B2 也同样操作。这时候 A1 和 B1 只相差一次提交,文件会差异很大,B1 试试直接 merge 过去 A1 ,解决冲突。

    callv

    34

    callv      2025 年 3 月 28 日

    A 、B 分支选一个代码变更基于 2.0 版本较少的分支,提一个 Pull Request 到 2.0 分支。这时候可以看到 file changes ,然后按文件修改记录挨个的塞到另一个分支上。

    apuslilie

    35

    apuslilie      2025 年 3 月 28 日

    类似这种需求是不是比较适合人工智能来搞,毕竟代码已经有了,只是一点一点的迁移过去。

    forcecharlie

    36

    forcecharlie      2025 年 3 月 28 日

    我建议可以使用 git reset 把 200 多个 commit 搞成一个,再去解决冲突进行合并,这个实际上和普通合并是一样的,只是能简化合并(比如分支有反复合并的情况等等),当然都需要解决冲突。

    当然还有 cherry-pick 这样的机制,还有 diff patch 这样的机制。甚至手动 copy 目录/文件

    ooee2016

    37

    ooee2016      2025 年 3 月 28 日

    200+的 commit ,那只有武力解决了,谁打输了谁负责合并解决冲突

    fawkes

    38

    fawkes      2025 年 3 月 28 日

    最理想的方式就是手动合并,没有捷径

    minami

    39

    minami      2025 年 3 月 28 日

    建议使用 Linus 合并法,
    -->在 2002 年以前,世界各地的志愿者把源代码文件通过 diff 的方式发给 Linus ,然后由 Linus 本人通过手工方式合并代码

    suikaChen

    40

    suikaChen      2025 年 3 月 28 日

    刚刚尝试 merge 了一下,自动合并了 122 个文件,有 37 个文件有冲突。
    冲突的文件数量看起来还可以。
    打算以 A 分支 为基底,将这 37 个文件手动合并,提交一个 commit ,提完之后再 merge B 分支一遍,保证合并到所有代码并且没有冲突。

    兄弟们觉得怎么样?

    rainbowhu

    41

    rainbowhu      2025 年 3 月 28 日

    merge commit 本身就可以包含解决冲突的修改,倒也不用单独搞个 commit 解决冲突。不过这些倒也没这么关键

    thorneLiu

    42

    thorneLiu      2025 年 3 月 28 日 via Android

    合代码简单 没有回归测试才会搞死人

    whoosy

    43

    whoosy      2025 年 3 月 28 日

    我做过类似的事情,和你的相比只多不少,直接强行合并,按文件解决冲突,最后 QA 全量测试兜底,中间过程心酸不再说了

    Wetoria

    44

    Wetoria      2025 年 3 月 28 日

    如果公用代码的部分改动不是特别大,A 切 C ,把 B 合到 C ,处理冲突。
    A 和 B 项目的需求,在对应分支上单独开发完以后,往 C 合一次。
    C 项目的就 C 项目继续开发。

    实在不行,按照前面说的 Linus 合并法搞。

    debuggeeker

    45

    debuggeeker      2025 年 3 月 29 日

    直接合,有冲突,有冲突就解决,这个时候找写代码的人解决,怎么把功能合起来,解决完冲突全部测试跑一次

    mark2025

    46

    mark2025      2025 年 3 月 29 日

    squash 压缩一次性合并

    BinCats

    47

    BinCats      2025 年 3 月 29 日

    分享下我的做法,idea 本地打开代码,选择代码文件夹,compare with branch ,人工简单复核一下,合并完成之后再操作一次看是否还有差异。2.git 的 cherry pick 功能