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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    @Bluecoda
        68
    billlee   2014-07-04 20:42:16 +08:00
    每次的提交流程是 add -i / diff --cached / commit
        69
    iugo   2014-07-06 14:05:01 +08:00
    每次「说话」之前再自己「想一想」是个好习惯.
        70
    dcoder   59 天前
    都是在自己的 dev branch 上 commit 吧, 可以 commit 完了之后,
    再 review 也行啊, 然后再 merge to stage/master branch.
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2436 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 28ms · UTC 00:37 · PVG 08:37 · LAX 17:37 · JFK 20:37
    ♥ Do have faith in what you're doing.