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

两处修改需要分开提交吗?

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

    一处功能性修改,比如 bug ( 1 行代码)

    一处配置文件修改( 1 行代码)

    两处修改是不相干的

    要分开提交吗?

    背后的问题是大家提交习惯是按照进度一次提交(有点备份的意思),还是按照功能细分提交(日志会很多)?

    68 条回复    2025-06-18 09:38:16 +08:00
    A1exL
        1
    A1exL  
       32 天前   ❤️ 3
    分开,revert 的时候方便,commit msg 也比较清晰
    GGPlayer
        2
    GGPlayer  
       32 天前   ❤️ 1
    小公司,会发现大部分人确实都是这 2 种习惯其中之一。
    我更倾向于分开提交,尤其是修改的类型已经不一样的。
    尤其是修复的,如果有多分支,修复的提交更应该是单独一个 commit 。
    asd7160
        3
    asd7160  
       32 天前 via iPhone   ❤️ 1
    要。如果发现修改有误,要撤回某个修改的话,混在一起会很麻烦
    z1645444
        4
    z1645444  
       32 天前   ❤️ 1
    分开提交,理由同 #1
    prosgtsr
        5
    prosgtsr  
       32 天前 via iPhone   ❤️ 1
    分开,我甚至会开发完一个功能 commit 一次,同事说我是他见过 commit 最多的人….
    如果公司有要求的话我会在 push 之前先把 commit rebase 成一个,没有要求的话我就直接 push
    hwdq0012
        6
    hwdq0012  
       32 天前   ❤️ 1
    哪怕是同一个文件的两行代码,只要是不同功能,最好分两次,不过实际上很多 code style ,或是无关紧要的随手修改,我都懒得多提交
    xzchsia
        7
    xzchsia  
       32 天前   ❤️ 1
    一般一个功能的修改作为一次提交,如果不属于一个功能的最好分两次提交。。
    540852101
        8
    540852101  
       32 天前   ❤️ 1
    分开提交,方便 review, 也方便以后追溯
    peasant
        9
    peasant  
       32 天前   ❤️ 2
    分开最好,但是并不是所有人都愿意这么麻烦,甚至 commit msg 都不想写,比我我现在这家公司的项目,日志里大量的“无”、“bug 修改”、“修改”。
    davin
        10
    davin  
       32 天前   ❤️ 1
    个人倾向于“小步快跑”,一堆功能塞进一个 commit ,之后万一要撤回重新修改的话,没那么多麻烦事儿
    hfl1995
        11
    hfl1995  
       32 天前   ❤️ 1
    正常是分开提交。
    但实际实践中都是懒得,一股脑提交然后 commit message 写上「一大波代码优化」,完事。
    Foxalone
        12
    Foxalone  
       32 天前   ❤️ 1
    看你自己. 建议分开.
    aqtata
        13
    aqtata  
    OP
       32 天前
    定了,分开多次提交
    guanzhangzhang
        14
    guanzhangzhang  
       32 天前   ❤️ 1
    人都是会犯错的,不相关的就不要 rebase 成一个 commit ,如果是单独一个功能,开发的时候可以多个 commit 到自己分支上再 rebase 成一个写清楚 commit 信息,推送后再提 merge 。
    这样后续有问题回退也简单,即使我请假了,别人也能 revert ,而不是打电话喊我回退哪些
    luckyjack
        15
    luckyjack  
       32 天前
    必须分开啊,不过道理都懂,实际做的时候随机应变(狗头
    leokun
        16
    leokun  
       32 天前
    有多少人真的分两次提交的
    COOOOOOde
        17
    COOOOOOde  
       32 天前
    惭愧, 我甚至有 code sync 这种 comment 的提交
    Meld
        18
    Meld  
       32 天前
    分开,反正又 copilot 去写 msg
    MonikaCeng
        19
    MonikaCeng  
       32 天前 via iPhone
    commit 分开
    pr 合一起
    xfn
        20
    xfn  
       32 天前
    应该分开提交。但实际上就像写文档一样,不喜欢别人不分开提交,不喜欢自己分开提交
    cwliang
        21
    cwliang  
       32 天前
    分开,fix bug 和 update config 本来就是不相干的东西,掺一起的话,commit msg 怎么写?后面怎么追溯?
    rebase 到一次的场景:对于 fix bug 有多次提交,可以合一起。或者对于 update config 有多次提交合一起
    unco020511
        22
    unco020511  
       32 天前
    看你们的工作模式了,我们这里功能分支 mr 到主干基本都是要求 squash 的,所以如果你这两个改动本来就是一个需求产生的,那对于主干来说是无所谓的.
    intmax2147483647
        23
    intmax2147483647  
       32 天前
    @leokun
    理论上如评论区:分开提交!这样更改内容清晰,好回退
    实际上:老夫管你这么多,卡卡卡一把梭
    Vindroid
        24
    Vindroid  
       32 天前
    分开,合一起 commit 不好写,其次能混个提交量
    ddczl
        25
    ddczl  
       32 天前
    分开
    abelmakihara
        26
    abelmakihara  
       32 天前
    自己预想一下会不会 release 的时候不一起发
    如果真的是会一起升级的或者小项目无所谓的就一起 commit 呗
    如果是比较严格的功能 那肯定是要分开的
    yuchen198
        27
    yuchen198  
       32 天前
    如果是小公司,只有自己开发的话无所谓,时间紧急的情况下,十几个文件一次 commit 也不是不行...时间充足的话,还是分开吧,尤其是配置文件和基础库,单独 commit 还是挺好的
    vikaptain
        28
    vikaptain  
       32 天前   ❤️ 17
    你问我的话就是分开提交。
    你让我干的话就是一起提交。
    jackOff
        29
    jackOff  
       32 天前
    分开提交,否则出问题时你就等着在一个提交里屎里淘金吧
    realpg
        30
    realpg  
    PRO
       32 天前
    如果项目只有我自己 改个缩进我都 commit
    如果项目是协同

    那么 除非紧急运维 bugfix 什么都开分支 而且开多个

    dev 的分支按功能提交
    dev+name 的 改个缩进都提交
    dfkjgklfdjg
        31
    dfkjgklfdjg  
       32 天前
    按照好管理的角度来说分开提交。但是是不是所有的都要分开提交按具体情况,是不是相关联的修改,或者团队是否有 PR 、MR 要 squash 的规则。
    但实际上就算要 squash 一个分支上面的 commit 也都是相关功能的修改,不会把很多不相关的功能调整串在一个分支上面。。
    pigfloyd
        32
    pigfloyd  
       32 天前
    一直同步提交
    Oilybear
        33
    Oilybear  
       32 天前
    按照常理来说就是分开提交
    flytsuki
        34
    flytsuki  
       32 天前
    别人的话最好分开提交,我方便看.我自己的话可能 n 多改动一起提交
    runlongyao2
        35
    runlongyao2  
       32 天前
    可以不分,但是要写清楚,修改文件和需求的对应关系
    crysislinux
        36
    crysislinux  
       32 天前 via Android
    就两行,分开是不可能分开的,这辈子都不可能分开。
    zhaol
        37
    zhaol  
       32 天前
    我知道分开提交是对, 但是现实我懒得搞, 直接一起提交了
    gaocc
        38
    gaocc  
       32 天前
    看大部分都是提分开提交。
    实际情况,大伙还是小厂多吧,一个项目就一个开发,甚至一个开发维护多个项目,来回都一个人。
    这种情况分开和一起提交,意义不大。后期换人也不会关心这种提交记录。

    假如大厂,多人维护一个产品,有分开的意义。但前提很多,比如这个功能没有其他人同步开发,不然混杂开发,即使考虑回退,多一个 commit 也太大意义。
    siteshen
        39
    siteshen  
       32 天前
    @prosgtsr 我是一个功能提交一次,但数量正好相反,我的 commit 是最少的(即使需要 review ,我也会自己 rebase )。

    有些需要多次发布后才能调试,我甚至还可能在调试完毕后 rebase 成一个 commit ,和同事确认后 push -f 。

    ps: 后端开发,代码管理员权限
    yaocai321
        40
    yaocai321  
       32 天前
    理论上和现实还是很大区别的
    上面给建议的,估计也没多少能遵循这个原则
    NotAfraidLP
        41
    NotAfraidLP  
       32 天前
    强迫症一般分开:
    一个 commit 是 [fix] 前缀,
    一个 commit 是[chore] 前缀
    litchinn
        42
    litchinn  
       32 天前
    分开提交,方便 revert ,cherrypick 等操作
    catamaran
        43
    catamaran  
       32 天前
    @NotAfraidLP 又学了一个单词
    jydeng
        44
    jydeng  
       32 天前
    分开,方便 pick
    GuluMashimaro
        45
    GuluMashimaro  
       32 天前
    有责任心就分开,随便整的话随便都可以。
    tonytonychopper
        46
    tonytonychopper  
       32 天前
    按照功能来分,revert 或者 cherry pick 都很方便
    CoderChan
        47
    CoderChan  
       32 天前
    commit 太多 rebae 处理冲突时麻烦( merge 没有问题)
    lucifer9
        48
    lucifer9  
       32 天前
    如果贵公司的 KPI 会参考 commit 数量...
    iOCZS
        49
    iOCZS  
       32 天前
    对外教育:原子性提交要分开
    对内实战:一股脑提交多省事
    ckdxc
        50
    ckdxc  
       32 天前
    @siteshen 我也是, 这样 git log 看上去, 更加规整
    TimPeake
        51
    TimPeake  
       32 天前
    你就看我的 gitlab 活动面板颜色深不深就完事儿了
    jiangzm
        52
    jiangzm  
       32 天前
    颗粒度不需要太细,如果是常规开发过程中的就一起提交,commit 信息哪个重要写哪个或者写两个一起
    如果是线上问题修复就不要搭车提交,分开提交比较好 ,如果有 bug 单号 在 commit 中加上 方便追踪。
    retrocode
        53
    retrocode  
       32 天前
    除非敏捷开发阶段每天动一堆文件, 否则我是建议分开提交, 回滚都不是重点, 主要很久以后回忆起来, 预览改动方便一次性了解改动地方, 不然一堆文件在一块短时间你真不一定能分出来当时改动了哪些问题
    shiny
        54
    shiny  
       32 天前 via iPhone
    分开
    你顺便还可以 code review 一次,自己给自己 review 也是很有帮助的
    veightz
        55
    veightz  
       31 天前 via Android
    都行的,详细一点更好,可以 merge master 的时候合并下 commit
    HENQIGUAI
        56
    HENQIGUAI  
       31 天前
    改动都比较小的话, 一起提交就行了,message 就写“fix: A & B”
    Jessun
        57
    Jessun  
       31 天前
    能分为什么不分?

    合着在一起提交唯一的优点就是:省那一两分钟时间?


    分开的优势:commit 历史清晰,便于 revert 。
    wolfie
        58
    wolfie  
       31 天前
    一次提交,两行 commit 。
    totoro52
        59
    totoro52  
       31 天前
    说是这么说,可真操作起来你们连 commit 内容都懒得写
    prosgtsr
        60
    prosgtsr  
       31 天前
    @TimPeake 我的 gitlab 面板颜色巨深,哈哈,平均一天三四十个 commit
    kingsword09
        61
    kingsword09  
       31 天前
    分开好点,楼上大佬们说的理由
    wangtian2020
        62
    wangtian2020  
       31 天前
    两行还分,两行我不提交只暂存
    一行一日志那就是没有日志,你分几百个 commit 谁会去看啊?
    RJH
        63
    RJH  
       31 天前
    分开提交都说方便 revert ,实际情况是反向改一下搞定
    CathayChen
        64
    CathayChen  
       31 天前
    我想问在座的有一年能有几次 revert
    YYYeung
        65
    YYYeung  
       30 天前
    多一个 commit 毫无成本可言,当然是分开提交
    PeiXyJ
        66
    PeiXyJ  
       30 天前
    ![]( )
    encounter2017
        67
    encounter2017  
       30 天前
    @CathayChen 25 次,咋了

    $ git log --oneline | Select-String -Pattern "revert|Revert" | Measure-Object | Select-Object -ExpandProperty Count
    25
    wymisgod
        68
    wymisgod  
       30 天前   ❤️ 1
    理论:最好是分开 commit ,message 标注清楚修改内容,最好是带上项目管理工具需求/缺陷等相关编号以便复盘
    现实:一把梭哈,message:一些修改
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3237 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 10:36 · PVG 18:36 · LAX 03:36 · JFK 06:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.