git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
dys0327
V2EX  ›  git

有一个 git 仓库合并问题,不知道怎么办才好

  •  
  •   dys0327 · 12 days ago · 2212 views
    目前有两个仓库,简称仓库 A 和仓库 B

    两个仓库结构如下:


    最终想要实现将两个仓库的代码合并,并且合并时可以提示冲突,手动解决。

    请教下有没有好的办法
    20 replies    2026-06-04 09:45:11 +08:00
    Nasdaq
        1
    Nasdaq  
    PRO
       12 days ago
    速请 CodeX App 真神
    javalaw2010
        2
    javalaw2010  
       12 days ago
    同意一楼意见
    coolair
        3
    coolair  
       12 days ago
    直接 clone 一个仓库 A 或 B ,然后将另一个 B 或 A 设置成 upstream ,直接 merge upstream --allow-unrelated-histories 不就可以了吗
    dys0327
        4
    dys0327  
    OP
       12 days ago
    @coolair B 和 A 的仓库结构不一样,一个是 xxx_cloud ,一个是 yyy_cloud ,但是内层的子模块名称时一致的
    evan1
        5
    evan1  
    PRO
       12 days ago
    idea 可以直接对比文件夹。具体就是在 idea 里打开仓库 A ,右键 moduleA 的文件夹,然后 compare with ,在弹出的页面选择仓库 B 的 moduleA 文件夹。然后可以逐一对比异同。和 git 的页面差不多。


    coolair
        6
    coolair  
       12 days ago
    @dys0327 #4 这有什么关系,你直接 clone 仓库 B ,然后 git mv 重命名,再 merge 。
    zizon
        7
    zizon  
       12 days ago
    仓库 B 叠个改名的 commit 然后 rebase 到 A?
    evan1
        8
    evan1  
    PRO
       12 days ago
    @evan1 #4 不一样的可以直接在这个页面合并。
    dys0327
        9
    dys0327  
    OP
       12 days ago
    @coolair #6 git 用的不熟练,我去查查
    dys0327
        10
    dys0327  
    OP
       12 days ago
    @evan1 #5 这个应该是直接比较的磁盘上的文件?我直接以仓库 A 为基础,比对目标选仓库 B 的目录,他应该是不区分仓库 B 中的分支,比对的是所有分支的文件?
    evan1
        11
    evan1  
    PRO
       12 days ago
    @dys0327 #10 是的,直接比较磁盘上的文件。

    你可以 down 下来两个仓库的文件,在本地对比+合并。弄完之后再提交到仓库 A 里面。
    evan1
        12
    evan1  
    PRO
       12 days ago
    @dys0327 #10 你本地也只是一个分支的文件,当前是哪个分支对比的就是哪个分支。
    ca2oh4
        13
    ca2oh4  
       12 days ago
    pr ?
    gadfly3173
        14
    gadfly3173  
       12 days ago via Android
    听起来适合用 git filter repo ,因为你还需要重写 module 的路径。
    BarryYangi
        15
    BarryYangi  
       12 days ago
    把这张图扔给 codex/cc 完事
    gscsnm
        16
    gscsnm  
       12 days ago
    你甚至把这张图扔给豆包,他都能给解决方案。。。
    stevenself
        17
    stevenself  
       12 days ago
    这两仓库建一个新的目录,然后 codex/cc 帮你做
    kphcdr
        18
    kphcdr  
       12 days ago
    一般情况下 moduleA ..B..C 应该都是 git 的 submodule ,应该各自有独立的仓库
    SoloCompany
        19
    SoloCompany  
       12 days ago via iPhone
    正确做法,先把代码 checkout 到同一 repo 的不同分支,然后分别对两个分支按照你的意愿执行例如 cloud xy 的子目录重命名,然后分别 commit ,再然后 merge 解决冲突
    hukei
        20
    hukei  
       12 days ago
    能描述出来的问题 不算问题
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5854 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 58ms · UTC 03:03 · PVG 11:03 · LAX 20:03 · JFK 23:03
    ♥ Do have faith in what you're doing.