V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
kaifeiji
V2EX  ›  问与答

[求助] git:如何把外网远程仓库某次提交之后的所有 commit push 到内网的 origin?

  •  
  •   kaifeiji · 2023-01-29 10:59:18 +08:00 · 906 次点击
    这是一个创建于 660 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

    公司有涉密业务,所以一直是内网开发。

    由于之前多次的疫情封控,公司将一部分非涉密项目迁移到互联网,方便居家办公。

    后来尝到甜头,索性就在外网了,但还是要同步回去,因为测试需要数据,数据必须在内网环境。

    我之前的做法,是从内网pull最新,push到外网,内网不再提交,外网的commit定期push回内网。

    问题

    这次同事有个项目也要迁出来,结果呢,他直接git clone --depth=1,然后 push 到了外网仓库。

    经过一段时间的工作,积累了几百个commit,要push回内网的时候,才发现不行。

    如果直接覆盖内网仓库,会丢失commit记录,影响内网测试的问题溯源。

    我的问题是:怎么把外网的commit无伤的push回内网?

    当然,提交回内网,我下一步还要把外网仓库重建,保持和内网仓库的一致性,方便后续定期同步。

    4 条回复    2023-01-30 09:52:25 +08:00
    Rache1
        1
    Rache1  
       2023-01-29 14:26:58 +08:00
    cherry-pick ?直接 merge 应该也是可以的吧
    momocraft
        2
    momocraft  
       2023-01-29 14:32:49 +08:00
    什么是"才发现不行", 错误信息是什么
    lookStupiToForce
        3
    lookStupiToForce  
       2023-01-29 14:40:39 +08:00
    rebase

    zhuanlan[.]zhihu[.]com/p/156726632
    kaifeiji
        4
    kaifeiji  
    OP
       2023-01-30 09:52:25 +08:00
    @lookStupiToForce 感谢,用 rebase 搞定了。

    命令行挑 commit 太费劲了,用 Tortoise Git 弄的,图形界面选择要合并回内网的 commit ,rebase 到内网的 origin ,push 搞定。

    然后把外网的库删了重建,内网的再同步过去,这次好啦!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3204 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 13:18 · PVG 21:18 · LAX 05:18 · JFK 08:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.