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

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

  •  5
     
  •   Livid · 2014-07-02 22:21:44 +08:00 · 9509 次点击
    这是一个创建于 3798 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近一年多来养成的一个习惯,就是每次 commit 之前,一定会在 GitX 里把要 stage 的更改再看一遍,而且 GitX 有一个好功能就是,你可以不用 stage 整个文件,你可以只 stage 某个函数中更改了的一个部分。

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

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

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

    sign your work. http://pragmatictips.com/70
    hustlzp
        23
    hustlzp  
       2014-07-03 00:24:22 +08:00
    在用sourcetree看。
    gancl
        24
    gancl  
       2014-07-03 00:49:09 +08:00
    sourcetree +1
    SoloCompany
        25
    SoloCompany  
       2014-07-03 00:55:43 +08:00
    直接在 JetBrains 里面提交代码就不会忘记自己 Review 了
    rainysia
        26
    rainysia  
       2014-07-03 02:32:06 +08:00
    发现没linux下用户吗? 给抛弃了.

    目前review用的qgit, 有时也用gitg 和Giggle.
    AstroProfundis
        27
    AstroProfundis  
       2014-07-03 05:25:32 +08:00
    @lyragosa 你不是一个人...

    但最近我也改成先提交到仓库再到服务器上去 git pull 了...
    jprovim
        28
    jprovim  
       2014-07-03 05:46:32 +08:00
    In zsh, use gca instead.

    or type it yourself `git commit -v -a`
    amoblin
        29
    amoblin  
       2014-07-03 06:30:15 +08:00   ❤️ 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  
       2014-07-03 07:43:34 +08:00
    commit 之前自己review是我们强制要求的
    niko
        31
    niko  
       2014-07-03 07:45:08 +08:00
    都会review,嗯~
    fsw90628
        32
    fsw90628  
       2014-07-03 08:16:34 +08:00
    看了 WWDC,苹果的团队会在 commit 之前运行一遍 performance 和 correctness 的测试。
    railgun
        33
    railgun  
       2014-07-03 09:14:30 +08:00
    不review就敢提交?哪来的勇气?
    wy315700
        34
    wy315700  
       2014-07-03 09:26:19 +08:00
    git add 之前用 git diff查看
    wecoders
        35
    wecoders  
       2014-07-03 09:59:07 +08:00
    SourceTree+1
    好用,不贵
    duzhe0
        36
    duzhe0  
       2014-07-03 10:56:15 +08:00
    一直都是先svn diff 再svn ci 的
    ijse
        37
    ijse  
       2014-07-03 11:00:41 +08:00
    一般用git diff

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

    另外,可以通过配置git hook实现一些commit之前要做的事,比如跑单元测试,检查代码格式 什么的。。
    bigporker
        38
    bigporker  
       2014-07-03 11:02:24 +08:00
    这个不是标配么

    每次commit之前,自己review一遍代码,再让同事帮忙review一遍代码是个好习惯
    yangqi
        39
    yangqi  
       2014-07-03 11:03:58 +08:00
    @bigporker 自己review就够了, 同事review应该是commit之后干的吧
    ceyes
        40
    ceyes  
       2014-07-03 11:10:06 +08:00
    commit 只要没有push上去就可以随便修改, rebase, reset……
    所以我更倾向于在push 之前review 这个commit, 或发patch 让大家review。
    Bluecoda
        41
    Bluecoda  
       2014-07-03 11:21:05 +08:00
    这么多SourceTree,用tig的有点另类啊。有没有朋友介绍一下SourceTree比tig优势在哪里?
    chshouyu
        42
    chshouyu  
       2014-07-03 11:27:18 +08:00   ❤️ 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  
       2014-07-03 11:40:38 +08:00
    git commit -m 之前必须确认好 没搞错。 在这过程之前的所有操作都可以快速还原的。。。
    rannnn
        44
    rannnn  
       2014-07-03 11:50:31 +08:00
    公司里面的ci build一次要半个小时。。。每次commit都是胆颤心惊的看了一遍又一遍生怕搞挂了。
    skywalker
        45
    skywalker  
       2014-07-03 11:58:14 +08:00
    magit +1
    hutushen222
        46
    hutushen222  
       2014-07-03 12:22:00 +08:00
    SourceTree +1
    pepsin
        47
    pepsin  
       2014-07-03 12:24:27 +08:00
    都是用 Github 那个客户端,每次都是通读一遍变更才出去。这不是基本素养么。
    suprod
        48
    suprod  
       2014-07-03 12:28:03 +08:00 via iPhone
    Tigtigtigtigtigtigtigtig
    est
        49
    est  
       2014-07-03 12:34:58 +08:00
    commit错了revert 然后 reset呗。
    reorx
        50
    reorx  
       2014-07-03 12:48:06 +08:00
    没错,自从用了 GitX 之后,review 和 commit 都变得更清晰了,即便一次写很多代码,也可以非常方便地拆分成多个 commit 了。个人感觉比 SourceTree 好用,btw,我用的是这个 fork: http://rowanj.github.io/gitx/
    qichunren
        51
    qichunren  
       2014-07-03 13:00:37 +08:00
    GitX可以选中文件中的行来提交,非常好用。
    breeswish
        52
    breeswish  
       2014-07-03 13:14:34 +08:00
    自从有了 SourceTree, 其他方式再也不用了.. 而且还是免费的
    finian
        53
    finian  
       2014-07-03 13:15:04 +08:00
    @wecoders SourceTree是免费的啊
    finian
        54
    finian  
       2014-07-03 13:15:41 +08:00
    SourceTree +1
    toctan
        55
    toctan  
       2014-07-03 13:26:01 +08:00 via iPhone
    magit 秒了所有…
    chemzqm
        56
    chemzqm  
       2014-07-03 13:38:16 +08:00
    alias gca="git commit -a -v"
    一般都是gca,gitx看各种分支线挺方便
    taobeier
        57
    taobeier  
       2014-07-03 14:02:38 +08:00
    git commit -a 不是什么好习惯
    66beta
        58
    66beta  
       2014-07-03 14:12:30 +08:00
    Github客户端可以当第三方用
    jianghu52
        59
    jianghu52  
       2014-07-03 15:48:49 +08:00
    看了一圈,没一个人用TortoiseGit ,我是不是太low了?但是我确实觉得小乌龟很好用啊。尤其是还可以有中文版。
    bigporker
        60
    bigporker  
       2014-07-03 16:25:45 +08:00
    @yangqi 确实团队会定期组织同事之间互相review已经提交到代码仓库里的代码

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

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

    @Bluecoda
    billlee
        68
    billlee  
       2014-07-04 20:42:16 +08:00
    每次的提交流程是 add -i / diff --cached / commit
    iugo
        69
    iugo  
       2014-07-06 14:05:01 +08:00
    每次「说话」之前再自己「想一想」是个好习惯.
    dcoder
        70
    dcoder  
       2019-05-20 07:40:23 +08:00
    都是在自己的 dev branch 上 commit 吧, 可以 commit 完了之后,
    再 review 也行啊, 然后再 merge to stage/master branch.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3840 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 05:07 · PVG 13:07 · LAX 21:07 · JFK 00:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.