V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
Livid
267.72D
571.47D
V2EX  ›  git

每次 commit 之前再自己 review 一遍代码是个好习惯

  •  5
     
  •   Livid ·
    PRO
    · Jul 2, 2014 · 10269 views
    This topic created in 4320 days ago, the information mentioned may be changed or developed.
    最近一年多来养成的一个习惯,就是每次 commit 之前,一定会在 GitX 里把要 stage 的更改再看一遍,而且 GitX 有一个好功能就是,你可以不用 stage 整个文件,你可以只 stage 某个函数中更改了的一个部分。

    如果你还在用 git commit -a 的话,或许你可以考虑一下让自己的 commit 冲动慢一点,这样对代码质量会有好处。
    70 replies    2019-05-20 07:40:23 +08:00
    kaichen
        1
    kaichen  
    PRO
       Jul 2, 2014   ❤️ 14
    如果熟悉在Command line使用Git,不要使用`-m`,而是在Commit的时候加上`-v`,这样在编辑Commit Message时先往下走,把代码再认真看一遍,看好了再写Commit Message。

    这是我一直以来的习惯。
    bitbegin
        2
    bitbegin  
       Jul 2, 2014
    GitX是啥?
    Livid
        3
    Livid  
    MOD
    OP
    PRO
       Jul 2, 2014
    isy
        4
    isy  
       Jul 2, 2014   ❤️ 1
    用 Vim 的话配合 vim-fugitive 插件也挺好用的, :Gdiff 对比很方便。 另外 git commit -a 是个很坏的习惯
    yangruixuan
        5
    yangruixuan  
       Jul 2, 2014
    我是处女座我骄傲
    TankyWoo
        6
    TankyWoo  
       Jul 2, 2014
    @kaichen 赞成,`-m`最好不要加,除非是简短的说明;还有就是没有特殊理由,不要使用`git add *`,`git add .`,也不要直接用`git commit -a`等。

    主要还是最好再次确认下,防止比如把一些不需要的如隐藏文件等也给add提交进去了。
    yangg
        7
    yangg  
       Jul 2, 2014
    @kaichen Tks, I used to use `git dc' which is aliased to `diff --cached'
    ispinfx
        8
    ispinfx  
       Jul 2, 2014 via iPad
    Magit帮到你
    leofml
        9
    leofml  
       Jul 2, 2014
    所以我一般用 SourceTree
    h2ero
        10
    h2ero  
       Jul 2, 2014   ❤️ 1
    一般都是用的git diff --cached看下, 看来以后要养成git ci -v的习惯。
    yangqi
        11
    yangqi  
       Jul 2, 2014   ❤️ 1
    这就是用GUI的好处,每次commit之前都可以很自然的review, 也便于更好的写comment
    powerfj
        12
    powerfj  
       Jul 2, 2014
    提交之前检查代码是非常必要的,经常看别人一不小心带出去不该带出去的代码的..每次看别人烟都不眨一下全量提交我就在为他捏把汗..
    Phariel
        13
    Phariel  
       Jul 2, 2014 via iPad
    sourcetree一样,神器。
    ChiangDi
        14
    ChiangDi  
       Jul 2, 2014
    JB家 的 IDE 都是 commit 的时候可以看的,关键是看到不对还可以直接改,简直神奇
    xujialiang
        15
    xujialiang  
       Jul 2, 2014
    虽然公司还在用svn。。。。。。不过我commit之前还是都看一遍。。。。。。。。xcode逼着我看啊~~~~~~~~~~~~~~~不看不舒服。。。。
    akfish
        16
    akfish  
       Jul 2, 2014
    Commit前review是必须的,我个人经常用pre-commit hook执行build和test,测试不通过直接就不能commit。
    passluo
        17
    passluo  
       Jul 2, 2014 via Android
    所以 SourceTree 的交互蛮好的,鼓励大家 commit 前先浏览一下自己的更改。
    yxjxx
        18
    yxjxx  
       Jul 2, 2014
    我觉得sourcetree比gitx更好用些,也有stage lines功能,还可以查看uncommitted changes,功能更丰富些.
    yangqi
        19
    yangqi  
       Jul 2, 2014
    sourcetree +1, 同时支持git和mercurial
    lyragosa
        20
    lyragosa  
       Jul 2, 2014
    看来v2ex只有我一个人直接在线上改服务器代码QAQ
    jianzong
        21
    jianzong  
       Jul 3, 2014
    一般直接git diff确认一下,刚刚才发现-v 是个好东西
    mcfog
        22
    mcfog  
       Jul 3, 2014   ❤️ 1
    作为一个有追求,负责任的开发,这是必须的,要把commit当成是一件自豪的事情

    sign your work. http://pragmatictips.com/70
    hustlzp
        23
    hustlzp  
       Jul 3, 2014
    在用sourcetree看。
    gancl
        24
    gancl  
       Jul 3, 2014
    sourcetree +1
    SoloCompany
        25
    SoloCompany  
       Jul 3, 2014
    直接在 JetBrains 里面提交代码就不会忘记自己 Review 了
    rainysia
        26
    rainysia  
       Jul 3, 2014
    发现没linux下用户吗? 给抛弃了.

    目前review用的qgit, 有时也用gitg 和Giggle.
    AstroProfundis
        27
    AstroProfundis  
       Jul 3, 2014
    @lyragosa 你不是一个人...

    但最近我也改成先提交到仓库再到服务器上去 git pull 了...
    jprovim
        28
    jprovim  
       Jul 3, 2014
    In zsh, use gca instead.

    or type it yourself `git commit -v -a`
    amoblin
        29
    amoblin  
       Jul 3, 2014   ❤️ 3
    我是这样做的:
    1. git stash
    2. git pull
    3. git stash pop(这里可能要处理冲突)
    4. git status
    5. git add -u
    6. git diff --cached
    7. git commit(这里我设置了2个git hooks:pre-commit和prepare-commit-msg。前者会做一些自动更新文件的工作,后者会自动添加一些信息到commit里去)
    8. git log 确认一下
    9. 没问题就 git push

    附上2个git hooks的链接: https://github.com/amoblin/MyDotFiles/tree/master/git-hooks
    softempire
        30
    softempire  
       Jul 3, 2014
    commit 之前自己review是我们强制要求的
    niko
        31
    niko  
       Jul 3, 2014
    都会review,嗯~
    fsw90628
        32
    fsw90628  
       Jul 3, 2014
    看了 WWDC,苹果的团队会在 commit 之前运行一遍 performance 和 correctness 的测试。
    railgun
        33
    railgun  
       Jul 3, 2014
    不review就敢提交?哪来的勇气?
    wy315700
        34
    wy315700  
       Jul 3, 2014
    git add 之前用 git diff查看
    wecoders
        35
    wecoders  
       Jul 3, 2014
    SourceTree+1
    好用,不贵
    duzhe0
        36
    duzhe0  
       Jul 3, 2014
    一直都是先svn diff 再svn ci 的
    ijse
        37
    ijse  
       Jul 3, 2014
    一般用git diff

    windows下内置了一个小工具 gitk, 还可以看提交树, 很不错~~ 

    另外,可以通过配置git hook实现一些commit之前要做的事,比如跑单元测试,检查代码格式 什么的。。
    bigporker
        38
    bigporker  
       Jul 3, 2014
    这个不是标配么

    每次commit之前,自己review一遍代码,再让同事帮忙review一遍代码是个好习惯
    yangqi
        39
    yangqi  
       Jul 3, 2014
    @bigporker 自己review就够了, 同事review应该是commit之后干的吧
    ceyes
        40
    ceyes  
       Jul 3, 2014
    commit 只要没有push上去就可以随便修改, rebase, reset……
    所以我更倾向于在push 之前review 这个commit, 或发patch 让大家review。
    Bluecoda
        41
    Bluecoda  
       Jul 3, 2014
    这么多SourceTree,用tig的有点另类啊。有没有朋友介绍一下SourceTree比tig优势在哪里?
    chshouyu
        42
    chshouyu  
       Jul 3, 2014   ❤️ 1
    可以试试git add -p
    可以精细的控制要提交的内容
    y - stage this hunk
    n - do not stage this hunk
    q - quit; do not stage this hunk nor any of the remaining ones
    a - stage this hunk and all later hunks in the file
    d - do not stage this hunk nor any of the later hunks in the file
    g - select a hunk to go to
    / - search for a hunk matching the given regex
    j - leave this hunk undecided, see next undecided hunk
    J - leave this hunk undecided, see next hunk
    k - leave this hunk undecided, see previous undecided hunk
    K - leave this hunk undecided, see previous hunk
    s - split the current hunk into smaller hunks
    e - manually edit the current hunk
    ? - print help

    GUI程序当然更好用一点
    lazyphp
        43
    lazyphp  
       Jul 3, 2014
    git commit -m 之前必须确认好 没搞错。 在这过程之前的所有操作都可以快速还原的。。。
    rannnn
        44
    rannnn  
       Jul 3, 2014
    公司里面的ci build一次要半个小时。。。每次commit都是胆颤心惊的看了一遍又一遍生怕搞挂了。
    skywalker
        45
    skywalker  
       Jul 3, 2014
    magit +1
    hutushen222
        46
    hutushen222  
       Jul 3, 2014
    SourceTree +1
    pepsin
        47
    pepsin  
       Jul 3, 2014
    都是用 Github 那个客户端,每次都是通读一遍变更才出去。这不是基本素养么。
    suprod
        48
    suprod  
       Jul 3, 2014 via iPhone
    Tigtigtigtigtigtigtigtig
    est
        49
    est  
       Jul 3, 2014
    commit错了revert 然后 reset呗。
    reorx
        50
    reorx  
       Jul 3, 2014
    没错,自从用了 GitX 之后,review 和 commit 都变得更清晰了,即便一次写很多代码,也可以非常方便地拆分成多个 commit 了。个人感觉比 SourceTree 好用,btw,我用的是这个 fork: http://rowanj.github.io/gitx/
    qichunren
        51
    qichunren  
       Jul 3, 2014
    GitX可以选中文件中的行来提交,非常好用。
    breeswish
        52
    breeswish  
       Jul 3, 2014
    自从有了 SourceTree, 其他方式再也不用了.. 而且还是免费的
    finian
        53
    finian  
       Jul 3, 2014
    @wecoders SourceTree是免费的啊
    finian
        54
    finian  
       Jul 3, 2014
    SourceTree +1
    toctan
        55
    toctan  
       Jul 3, 2014 via iPhone
    magit 秒了所有…
    chemzqm
        56
    chemzqm  
       Jul 3, 2014
    alias gca="git commit -a -v"
    一般都是gca,gitx看各种分支线挺方便
    taobeier
        57
    taobeier  
       Jul 3, 2014
    git commit -a 不是什么好习惯
    66beta
        58
    66beta  
       Jul 3, 2014
    Github客户端可以当第三方用
    jianghu52
        59
    jianghu52  
       Jul 3, 2014
    看了一圈,没一个人用TortoiseGit ,我是不是太low了?但是我确实觉得小乌龟很好用啊。尤其是还可以有中文版。
    bigporker
        60
    bigporker  
       Jul 3, 2014
    @yangqi 确实团队会定期组织同事之间互相review已经提交到代码仓库里的代码

    有的团队在提交时就要求两人review
    尤其是修改设计到别人负责的模块时
    fo2w
        61
    fo2w  
       Jul 3, 2014
    压根不是习惯问题, 基本素养
    terrortang
        62
    terrortang  
       Jul 3, 2014
    @ispinfx 同magit
    sd4399340
        63
    sd4399340  
       Jul 3, 2014
    一般sourcetree里会看一下,现在也不用-m了,commit写的越详细越好
    sd4399340
        64
    sd4399340  
       Jul 3, 2014
    还有个好处就是,git commit打开vim以后,第一行写简短的,你长度太长了字体会变灰提示,中间空一行,后面写详细的,这样的话github上可以识别的,而且你发pull request的话如果只有一个commit,会自动把简短的当标题,详细的当内容,非常方便!
    maga
        65
    maga  
       Jul 3, 2014 via iPhone
    一直用终端的git,原来还有gitx好东西
    lijinma
        66
    lijinma  
       Jul 4, 2014 via Android
    没有人用 git gui& 吗?
    myrual
        67
    myrual  
       Jul 4, 2014
    用过tortisegit, 也用过xcode自带的git。
    sourcetree在mac上用过,也在windows上用过。
    只有sourcetree才能真正的让我觉得顺手。
    任何时候都可以反悔,任何一块都可以反悔,任何一行都可以反悔。

    唯一的问题就是windows上面的版本很卡,但是为了sourcetree,我也只能忍了。

    @Bluecoda
    billlee
        68
    billlee  
       Jul 4, 2014
    每次的提交流程是 add -i / diff --cached / commit
    iugo
        69
    iugo  
       Jul 6, 2014
    每次「说话」之前再自己「想一想」是个好习惯.
    dcoder
        70
    dcoder  
       May 20, 2019
    都是在自己的 dev branch 上 commit 吧, 可以 commit 完了之后,
    再 review 也行啊, 然后再 merge to stage/master branch.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2452 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 229ms · UTC 04:59 · PVG 12:59 · LAX 21:59 · JFK 00:59
    ♥ Do have faith in what you're doing.