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

如何看待只允许用 SourceTree 提交代码不允许用 git bash 的观念?

  •  
  •   Lullaby · 2018-10-25 11:18:13 +08:00 · 11237 次点击
    这是一个创建于 1981 天前的主题,其中的信息可能已经有所发展或是发生改变。

    团队内有人如是说:工具不一致会导致代码冲突...

    第 1 条附言  ·  2018-10-26 15:08:26 +08:00
    话说你们都不用 git-gui / gitk 的吗?
    101 条回复    2018-10-26 18:21:04 +08:00
    1  2  
    1024MB
        1
    1024MB  
       2018-10-25 11:25:31 +08:00   ❤️ 1
    躺着看,要么忍,要么滚,先不讨论是否会导致代码冲突,大部分公司要的不是你的特立独行,而是,一头领头母猪跳下河里后,虽然你知道跳下去的后果,你也得跟着跳.
    xcstream
        2
    xcstream  
       2018-10-25 11:27:17 +08:00   ❤️ 2
    git bash 一知半解的人容易瞎提交
    lihongjie0209
        3
    lihongjie0209  
       2018-10-25 11:29:08 +08:00   ❤️ 3
    难道你提交的时候还会附带工具信息? 如果没有, 随便用
    ifconfig
        4
    ifconfig  
       2018-10-25 11:32:55 +08:00   ❤️ 6
    同意楼上,瞎提交。
    我就是强制要求团队用 SourceTree,除非能力牛逼到熟练各种分支 rebase cheout tag 解决冲突等命令,那不管。
    举个例子:很多新手刚开始接触 git 就知道 git add -A,结果莫名其妙报错了,才知道把没改完的文件也提交了
    yhxx
        5
    yhxx  
       2018-10-25 11:33:48 +08:00   ❤️ 2
    我很好奇他怎么知道你用什么提交的?
    calpamomo
        6
    calpamomo  
       2018-10-25 11:36:07 +08:00   ❤️ 2
    +1 好奇:如何知道用什么工具提交
    liwufan
        7
    liwufan  
       2018-10-25 11:40:37 +08:00   ❤️ 4
    有道理,不实际。

    https://xkcd.com/1445/
    current
        8
    current  
       2018-10-25 11:48:15 +08:00   ❤️ 2
    用 source tree 也没啥不好的,始终实时可见的 git status,轻松愉快的分 hunk 提交,轻松愉快的具名 stash,更加漂亮的 commit graph,及其漂亮好用的 diff。

    对小白可以大幅减少错误操作的可能性,对熟手也可以大幅降低心智负担。除了 windows 版 ui 做的太烂几乎没缺点。

    以及同上,如果你是一个 git 熟手,用 bash 反正其他人也看不出来,
    wlsnx
        9
    wlsnx  
       2018-10-25 11:57:12 +08:00
    我很好奇“工具不一致会导致代码冲突”这个结论是怎么来的。
    rockyou12
        10
    rockyou12  
       2018-10-25 11:59:20 +08:00 via Android
    就是怕团队有人不熟乱提交呗,我真的很理解。
    我司有个仓库 master 上所有文件的换行符都从 win 的搞成 unix 的,但我司主要都是用 win 的。每次合并到 master 那叫一个痛苦...
    learnshare
        11
    learnshare  
       2018-10-25 12:09:54 +08:00   ❤️ 1
    经常搞不清楚换行符,以及 UTF8 bom 的人,统一工具和配置会很轻松
    geelaw
        12
    geelaw  
       2018-10-25 12:10:28 +08:00
    SourceTree 我目前发现有两个有毒的地方:

    1. 会反复弹窗口问你的 credential 来 fetch,我至今没弄明白它的 credential 存在哪里;当然有些 repo 我必须换一个账户才能用,所以这个也很烦
    2. 安装之后会“好心帮你”把 core.autocrlf 修改成 true,我在 Windows 上都是手工控制换行风格的

    其他都挺好的。我经常切换工具,如果有分行提交的话就会用 SourceTree,如果要 interactive rebase 就会用 VS Code 编辑 git-rebase-todo,其他的随心情。

    @rockyou12 #10 应该检查是不是 SourceTree 帮你干的“好事”。
    int64ago
        13
    int64ago  
       2018-10-25 12:20:19 +08:00 via Android
    我看了三遍标题,确定你不是把顺序说反了
    Cbdy
        14
    Cbdy  
       2018-10-25 12:26:22 +08:00
    半吊子观点,SourceTree 也只是把你的点点点操作翻译成 git 命令去执行的

    那你们团队有没有统一键盘,统一输入法?不然也有可能“工具不一致会导致代码冲突”😄
    but0n
        15
    but0n  
       2018-10-25 12:36:42 +08:00 via iPhone
    我有个项目 TortoiseGit 和 git bash 的 git status 不一致 不知道什么原因
    xuboying
        16
    xuboying  
       2018-10-25 12:39:53 +08:00
    忍着,等到哪天他们 merge 出问题了你再亮出 git bash,写脚本检查 repo,吊打 sourcetree
    啊,你不会吊打 sourcetree,那还是乖乖听头头的吧
    yuanfnadi
        17
    yuanfnadi  
       2018-10-25 12:41:49 +08:00 via iPhone
    gaa
    gmm
    感觉这样比点鼠标不知道快了多少。
    sutra
        18
    sutra  
       2018-10-25 12:45:19 +08:00   ❤️ 1
    +1 我很好奇他怎么知道你用什么提交的?
    Lullaby
        19
    Lullaby  
    OP
       2018-10-25 12:56:50 +08:00
    @lihongjie0209
    @ifconfig
    @yhxx
    @calpamomo
    @sutra
    他看见过我提交代码,这有什么好好奇的
    lihongjie0209
        20
    lihongjie0209  
       2018-10-25 12:59:00 +08:00
    @Lullaby 难道他二十四小时看着你提交? 工具随便用就是了
    Lullaby
        21
    Lullaby  
    OP
       2018-10-25 13:00:06 +08:00
    @ifconfig
    @current
    用 git bash 两三年 并没有出过什么幺蛾子
    Lullaby
        22
    Lullaby  
    OP
       2018-10-25 13:00:36 +08:00
    @int64ago 你没有看错大兄弟
    Lullaby
        23
    Lullaby  
    OP
       2018-10-25 13:02:49 +08:00
    @wlsnx 估计他的意思是操作系统的换行符的问题吧
    sutra
        24
    sutra  
       2018-10-25 13:09:58 +08:00
    结果一致(比如换行符号到底是 \n 还是 \r\n、git log author 等容易忽略的地方)就行,管我用什么工具呢,我觉得命令行效率高,就命令行呀,你觉得点鼠标快你就点鼠标嘛。
    current
        25
    current  
       2018-10-25 13:32:51 +08:00
    @Lullaby 我也没说你用 bash 会出问题不是。我只是说使用 source tree 即使对于熟手也可以降低心智负担
    Jeri
        26
    Jeri  
       2018-10-25 13:37:12 +08:00
    我站 source tree:有更直观、更方便的图形可视化工具,我选择优先用工具。
    tulong
        27
    tulong  
       2018-10-25 13:42:01 +08:00
    sourcetree 很好。git 除非玩的超级溜,不然纯属浪费时间。
    newtype0092
        28
    newtype0092  
       2018-10-25 13:46:19 +08:00
    sourcetree 来来回回用了几次最后都放弃了,总是搞不清我点了某个按钮它给我执行什么命令或者加了什么乱七八糟的参数。。。
    Exceptions
        29
    Exceptions  
       2018-10-25 13:53:58 +08:00   ❤️ 1
    就我一个用命令的吗...表示用工具很害怕一个按钮下来给你执行的什么命令...
    nekoyaki
        30
    nekoyaki  
       2018-10-25 14:02:44 +08:00
    @Exceptions
    我也是,而且我还怕的不是自己,是团队里其他人……
    可能是我司招人的时候对 git 有倾向,从我司的结果看提交提出过问题的,尤其是提出了问题自己发现不了或者不知道怎么解决的,都是用图形工具的; 用命令出问题的少,而且出了问题这些人也知道怎么解决。
    说工具可以防止小白乱提交,我不知道是不是没见过真正的小白……有些人真的是不看提示就瞎点,点不进去换按钮硬点。
    zhuziyi
        31
    zhuziyi  
       2018-10-25 14:09:29 +08:00
    用什么都行,但出了问题能即时解决,如果解决不了即时背锅。
    deepdark
        32
    deepdark  
       2018-10-25 14:28:33 +08:00 via Android
    @Exceptions 坚持用命令+1,感觉一直用 GUI 会生疏
    eloah
        33
    eloah  
       2018-10-25 15:02:33 +08:00
    没有 linux 版本啊,最大的问题是......
    abelmakihara
        34
    abelmakihara  
       2018-10-25 15:13:26 +08:00
    反正我是不够熟
    用 GUI 好歹还能 cherrypick 之类的
    敲命令真的不敢乱动
    junjieyuanxiling
        35
    junjieyuanxiling  
       2018-10-25 15:24:33 +08:00 via Android
    @rockyou12 我记得 vim 可以用 ff 改换行方式,其他编辑器 /IDE 应该有类似功能的插件吧。
    catinred
        36
    catinred  
       2018-10-25 15:36:21 +08:00
    #29 +1 SourceTree 的某些按钮有毒
    sagaxu
        37
    sagaxu  
       2018-10-25 15:40:34 +08:00 via Android
    禁用 forcepush,订好内部规范,然后谁出错罚谁,管它用哪个工具
    sagaxu
        38
    sagaxu  
       2018-10-25 15:43:09 +08:00 via Android   ❤️ 3
    忍不住说一句,菜鸡屁事多,尤其是当了小作坊技术领导的菜鸡,歪理比民科还多
    yc8332
        39
    yc8332  
       2018-10-25 15:54:14 +08:00   ❤️ 1
    git 学习 /使用不都是用命令行吗?难道不会命令行还敢说你会用 git ?
    lancelock
        40
    lancelock  
       2018-10-25 15:54:14 +08:00
    sourcetree 我真的用不会,那密密麻麻的按钮、设置看到就发憷
    jin5354
        41
    jin5354  
       2018-10-25 16:04:25 +08:00   ❤️ 1
    从刚开始学 git 就是命令行开始的
    后来第一次操作 sourcetree 时看到那一堆按钮被唬住了,吓的我感觉点击 “命令行模式”
    janxin
        42
    janxin  
       2018-10-25 16:15:26 +08:00
    跟工具有什么关系?
    GeruzoniAnsasu
        43
    GeruzoniAnsasu  
       2018-10-25 16:25:40 +08:00
    sourcetree 我就只用两个功能。。一个是看本地的分支树,这个在命令行下没法看,另一个是分块提交,gui diff 还是比命令行看方便太多了,不过要编辑的话会用 jb 系自带,sourcetree 只用来检查回滚被误格式化没必要提交的行


    pick 我也用命令行,先 sourcetree 看一眼图要 pick 哪些东西,然后复制 hash pick,冲突用 vscode 解决
    meepo3927
        44
    meepo3927  
       2018-10-25 16:45:07 +08:00
    如何看待?

    嗯……像看菜鸡一样看待
    anonymous256
        45
    anonymous256  
       2018-10-25 16:49:13 +08:00
    有人用 GitKraken 吗? 用这个很舒服.
    x7395759
        46
    x7395759  
       2018-10-25 17:22:21 +08:00
    🙈
    Lpl
        47
    Lpl  
       2018-10-25 17:57:11 +08:00
    用 Git 命令多爽,只要你不开保护分支,git add/commit/push -f 一把梭让你爽翻天
    rockyou12
        48
    rockyou12  
       2018-10-25 17:57:44 +08:00
    @junjieyuanxiling 所有编辑器或者 ide 都有这个功能,但人家都 push 上去了你再改一次,commit 里面的文件简直不能看……
    ggsimidar
        49
    ggsimidar  
       2018-10-25 18:09:28 +08:00
    @rockyou12 可以 append 然后 force push 啊
    chenuu
        50
    chenuu  
       2018-10-25 18:21:17 +08:00
    命令+gitk
    bigjack
        51
    bigjack  
       2018-10-25 18:23:03 +08:00
    早走早幸福
    fulvaz
        52
    fulvaz  
       2018-10-25 18:30:22 +08:00
    还行啊...工程的本质就是降低门槛啊, 没啥毛病
    Wicked
        53
    Wicked  
       2018-10-25 18:32:20 +08:00 via iPhone
    @ifconfig 花点时间写个教程开个讲座,把新手培养起来吧,source tree 就不会瞎提交了么… 一天就能学会,一个月就能熟练的工具,真视为洪水猛兽的话,干脆用 svn 好了
    hanxiV2EX
        54
    hanxiV2EX  
       2018-10-25 18:41:18 +08:00 via Android
    把开发的主分支设为保护就行了,其他乱搞是因为没学会,gui 也会有乱搞得人,教几次就行了,学不会就辞退吧。
    rockyou12
        55
    rockyou12  
       2018-10-25 19:28:05 +08:00
    @ggsimidar 你这个确实是好办法,但是-f 真的虚……
    littlebaozi
        56
    littlebaozi  
       2018-10-25 19:33:14 +08:00
    你可以打开 sourcetree,然后点击命令行模式。小孩才做选择,大人全都要会。
    SsuchingYu
        57
    SsuchingYu  
       2018-10-25 19:37:39 +08:00 via Android   ❤️ 1
    羡慕 macOS 和 Windows 上有 SourceTree。
    Linux 上没有 SourceTree,只能 git 命令才能维持生活这样子。
    guog
        58
    guog  
       2018-10-25 19:46:50 +08:00 via Android
    @GeruzoniAnsasu 你需要 tig 😀
    mritd
        59
    mritd  
       2018-10-25 19:53:58 +08:00 via iPhone
    不好意思,自己写工具走 git flow
    Lullaby
        60
    Lullaby  
    OP
       2018-10-25 22:30:21 +08:00
    @ggsimidar commit 可以不 push,-f 必须死
    dingyaguang117
        61
    dingyaguang117  
       2018-10-25 23:00:44 +08:00
    一般情况下用 sourcetree 出了各种疑难杂症用 git bash
    bumz
        62
    bumz  
       2018-10-25 23:17:42 +08:00   ❤️ 1
    @SsuchingYu #57 linux 上有 sublime merge 等一堆 git 工具
    bumz
        63
    bumz  
       2018-10-25 23:19:01 +08:00
    kiwi95
        64
    kiwi95  
       2018-10-25 23:19:37 +08:00 via Android
    从有 git 开始就一直用 git bash
    bumz
        65
    bumz  
       2018-10-25 23:20:55 +08:00
    bitbucket 有 branch permissions,github 有 proteted branch,都可以禁止 force push
    不 -f 问题其实不大
    SsuchingYu
        66
    SsuchingYu  
       2018-10-25 23:22:02 +08:00
    @bumz #62 看起来很好啊,如果能开源就更好了。
    DaraW
        67
    DaraW  
       2018-10-25 23:49:57 +08:00 via iPhone
    把 master 锁了,不接受 push master,禁止在多人协作的分支上 force push。

    小白操作错了就操作错了,失误个几次很正常,吃过亏就长记性了,别影响到别人就行。

    另外不会就学,遇到自己不学还不让别人用的,赶紧跑路吧。
    nooper
        68
    nooper  
       2018-10-26 00:20:26 +08:00 via iPad
    我感觉奇葩太多,愿意用啥用啥呗,管那么多事情。
    msg7086
        69
    msg7086  
       2018-10-26 01:36:52 +08:00
    我们的开发风格是,允许 Force push,包括 master 和 release 分支。
    鼓励频繁 Rebase,鼓励使用 GUI。

    用 Git bash 主要是误操作可能性太高。图形界面发明出来是有道理的,比如 Git 的图形界面里,可以更直观地了解 Repo 当前的状况(比如 HEAD、本地分支、远程分支各自指向的提交节点),甚至就算是误删除了某个 commit,看 ref log 的时候都要远比命令行来得直观。

    PS: SourceTree 我是真用不惯……
    20015jjw
        70
    20015jjw  
       2018-10-26 03:52:40 +08:00 via Android
    乱提交 code review 不给过就行了啊 这不很简单
    NeoChen
        71
    NeoChen  
       2018-10-26 07:27:41 +08:00   ❤️ 3
    一伙人造房子,工头对大伙说,请大家都用 sourcetree 牌手枪钻拧螺丝,一个小伙子跳出来说,我用手就能拧…
    其实没必要讨论工具的好坏,在工程思维中,服从也是一条优秀的品质,当然质疑也不可或缺。但是就楼主的问题,我觉得并不需要质疑,统一工具可以减少因为工具不一致带来的不确定因素,这在团队合作时是非常重要的,团队需要尽可能消除个体差异,这也是为什么团队要统一代码风格。
    楼主如果从一个团队管理者角度出发,应该就能明白了。
    ech0x
        72
    ech0x  
       2018-10-26 07:33:09 +08:00 via iPhone
    我用 tig
    chenchangjv
        73
    chenchangjv  
       2018-10-26 07:54:02 +08:00 via iPhone
    我昨天用 source tree commit push 一通操作,代码丢了
    mengzhuo
        74
    mengzhuo  
       2018-10-26 08:04:29 +08:00 via Android
    所以可以用 tig 啊~
    dangyuluo
        75
    dangyuluo  
       2018-10-26 08:06:15 +08:00
    @20015jjw 一般有这种需求(统一 git GUI 工具)的公司,估计大家都在 master 上干活,没有 code review 阶段。你在硅谷这边么?
    Sharuru
        76
    Sharuru  
       2018-10-26 08:23:50 +08:00 via Android
    嗯...每次这种话题总有工具优越党 ORZ。

    大概想了想,Git 工具不一样导致冲突的可能...我想到一个,比如换行符( 有些 GUI 针对 repository 会有不同的预设

    说回正题,对于大致 Git 操作流程,或者从 SVN 转过来的开发来说,GUI 点点点更容易接受。CLI 敲半天命令,tab 敲一万年补完路径啥的个人觉得不友好,也蛋疼。

    几年前,我们一个团队从 SVN 转 Git 的时候,有个比较有脾气的技术就天天说 GUI 土,Bash 秒天秒地。后来不多久,文件,分支之多了以后,就天天说 GUI 真香了( doge ),一方面是因为他已经了解大部分 Git 的操作手法了,在用 GUI 在大部分情况下,明显便利不少。

    题外话,比起 Source Tree 我喜欢 GitExtension,糙快猛。
    j717273419
        77
    j717273419  
       2018-10-26 08:30:15 +08:00 via Android
    你用 bash 提交也没人看得出来吧。
    hasbug
        78
    hasbug  
       2018-10-26 09:05:04 +08:00
    这种公司呢 和你三观不合,一般就是要么忍 要么走人。
    passerbytiny
        79
    passerbytiny  
       2018-10-26 09:05:05 +08:00   ❤️ 1
    趁早走。

    “工具不一致会导致代码冲突...”,能说出这种话的团队,肯定有这些特点:没有新员工培训、质量控制、技术委员会等等;领导特别怕麻烦,怕到本来该指挥机器自动化干的事,让人手工处理。

    总之,公司 Low、团队 Low、领导 Low,趁早走。
    skywalkerfc
        80
    skywalkerfc  
       2018-10-26 09:19:47 +08:00
    @anonymous256 +1,表示 gitkraken 看起来比较舒服
    HuHui
        81
    HuHui  
       2018-10-26 09:23:49 +08:00 via Android
    目前经历的来看,非必要强制比较多的团队大多数都是傻逼比较多的,建议走。
    WayneLau
        82
    WayneLau  
       2018-10-26 09:34:16 +08:00
    表示只会用 git 命令,反而各种 git 的 gui 工具弄得我晕头转向,有些 IDE 也带一个 git 前端;所以只用 git 命令保持统一
    20015jjw
        83
    20015jjw  
       2018-10-26 09:39:37 +08:00 via Android
    @dangyuluo 在啊
    xuan_lengyue
        84
    xuan_lengyue  
       2018-10-26 09:48:58 +08:00
    有些操作还是 GUI 比较直观,比如看 diff 之类的,喜欢用哪个就用哪个。
    Govda
        85
    Govda  
       2018-10-26 09:53:37 +08:00
    不会用 gui 怎么办
    jobscolin
        86
    jobscolin  
       2018-10-26 10:02:30 +08:00
    +1 我很好奇他怎么知道你用什么提交的?
    zongren
        87
    zongren  
       2018-10-26 10:02:46 +08:00
    sourcetree 能解决代码冲突?没用过
    gesse
        88
    gesse  
       2018-10-26 10:05:12 +08:00
    git push -f 解决一切 ;)
    amenging
        89
    amenging  
       2018-10-26 10:09:05 +08:00
    感觉命令行更直接诶,GUI 不怎么会用,可能学的时候看的教程都是 bash 吧,用 bash 的话,感觉脑子里的结构会很清晰,GUI 有点莫名其妙的(´・_・`)
    1217950746
        90
    1217950746  
       2018-10-26 10:27:29 +08:00
    我也不知道人家怎么提交了,代码被同一个人覆盖了两次,代码被覆盖到了一个多月前的版本
    liubo
        91
    liubo  
       2018-10-26 10:37:58 +08:00
    看来要下个 sourcetree 体验一下了
    junbaor
        92
    junbaor  
       2018-10-26 10:38:07 +08:00
    对 sourcetree 无感,感觉最好用的 git 客户端就是 jetbrains 家 IDE 自带的。
    undeflife
        93
    undeflife  
       2018-10-26 10:53:28 +08:00
    提这个的肯定没踩过 sourcetree 的坑, 我曾经碰到过, A 用 git bash,但是某个较低版本, B 用 sourcetree 最新, 某些原因导致 sourcetree 无法正常 commit, 一顿操作后, sourcetree 可以提交了,只不过全是--force ...
    littlewing
        94
    littlewing  
       2018-10-26 11:56:08 +08:00
    离职吧,如果说限制只能用 git bash 可以理解,限制只能用 GUI 工具就不能理解了
    nidengxiajiuaida
        95
    nidengxiajiuaida  
       2018-10-26 16:44:51 +08:00
    路芭比,来我们公司吧。SVN 欢迎你。
    nidengxiajiuaida
        96
    nidengxiajiuaida  
       2018-10-26 16:55:39 +08:00
    git 设置了 alias 后,那是其他客户端所不能比的
    nidengxiajiuaida
        97
    nidengxiajiuaida  
       2018-10-26 16:56:02 +08:00
    离职吧
    raphaelsoul
        98
    raphaelsoul  
       2018-10-26 16:57:54 +08:00
    自从开始用 idea 内置的 git GUI 以后就不怎么用 source tree 了
    dajj
        99
    dajj  
       2018-10-26 17:48:03 +08:00
    linux 没有 sourcetree 怎么办
    blacklee
        100
    blacklee  
       2018-10-26 18:14:25 +08:00
    这种规定还好,没什么值得辩驳的,仅仅是改一个小习惯。如果在这种事情上面也要扭捏的话,未免太过矫情。
    git bash 没什么不好的,但 source tree 同样没什么不好的。
    这个规定应该做的唯一更改,大概是「你们这些用 git bash 的异教徒,如果在这件事上出了差错的话,那要么改用 sourcetree,要么滚蛋」,这样爱用 bash 的继续用 bash 就是了。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1016 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 19:38 · PVG 03:38 · LAX 12:38 · JFK 15:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.