V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
? Pro Git
? Atlassian Git Tutorial
? Pro Git 简体中文翻译
? GitX
smdbh
V2EX  ?  git

git 一个分支 push 到远程,会携带其他分支的 commit?

  •  
  •   smdbh · 65 天前 · 1859 次点击
    这是一个创建于 65 天前的主题,其中的信息可能已经有所发展或是发生改变。

    腾讯云最新优惠活动来了:云产品限时1折,云服务器低至88元/年 ,点击这里立即抢购:9i0i.cn/qcloud,更有2860元代金券免费领取,付款直接抵现金用,点击这里立即领取:9i0i.cn/qcloudquan

    (福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

    本地网络有个 git 仓库,main 都是其他分支 merge 得到的,就 3 ,4 个 commit, 其他分支有总共几十个提交。

    现在想将 main 分支的这几个 commit 发布到外网的 git 仓库,其他分支不发 外网仓库刚新建,无任何内容 使用

    git push remotename main
    

    期望外网 main 只有 3 ,4 个提交, 但结果外网的 git main 出现几十个提交,包含了所有分支的信息

    请问这是啥问题,该如何操作实现期望的几个提交结果, 谢谢

    11 条回复  ?  2024-02-23 09:18:12 +08:00
    yeqizhang
        1
    yeqizhang  
       65 天前 via Android   ?? 1
    你不是问题,你看错本地的 main 了?本地的 main 合了其它分支必然包括那些提交
    smdbh
        2
    smdbh  
    OP
       65 天前
    @yeqizhang 那这个不是和 rebase 没区别了
    dfkjgklfdjg
        3
    dfkjgklfdjg  
       65 天前   ?? 1
    你应该用 squash 把想要合并进来分支历史压缩成一个 Commit 。直接 merge 会带着合并进来的分支中所有的 commit 的
    dfkjgklfdjg
        4
    dfkjgklfdjg  
       65 天前
    @yeqizhang #1 ,OP 的 main 里面的 4 个 commit 应该都是 merge commit 吧。
    MENGKE
        5
    MENGKE  
       65 天前
    git merge xxx --no-ff
    lisxour
        6
    lisxour  
       65 天前   ?? 1
    你说的 3 、4 个 commit ,是 merge commit 吧。。。

    如果你合并分支时,不把 commit 合成一个,其实是会把每一条 commit 带过来的

    leonshaw
        7
    leonshaw  
       65 天前   ?? 2
    commit 不是空中楼阁
    smdbh
        8
    smdbh  
    OP
       65 天前
    @lisxour ,我是想只要蓝色的 push 出去,实际是紫色的也有了。 “如果你合并分支时,不把 commit 合成一个,其实是会把每一条 commit 带过来的”, 是不是说紫色先要 squash 成 1 个 commit 再 merge 到 main ?
    dfkjgklfdjg
        9
    dfkjgklfdjg  
       65 天前
    @smdbh #8 ,是的
    jpuyy
        10
    jpuyy  
       65 天前
    git log main 有多少 commit, push 到 remote main 就会有多少 commit
    lisxour
        11
    lisxour  
       64 天前
    @smdbh #8 是的,但是合不合并成大 commit 各有优缺点,实际用哪种看各自的具体需求

    合并成大 commit
    优点:回退方便,一回退就是一整个功能
    缺点:丢失中间的小 commit 信息(改动信息),只知道做了这个功能

    不合并大 commit
    优点:所有 commit 信息都还在,方便查历史改动
    缺点:出了问题不好回退,假如两个功能改动在一个期间同时 merge 了,两个的 commit 会全混在一起,当你想回退 A 功能时,你需要把 A 功能所有相关 commit 找回来才能回退
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2514 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:01 · PVG 00:01 · LAX 09:01 · JFK 12:01
    Developed with CodeLauncher
    ? Do have faith in what you're doing.


    http://www.vxiaotou.com