V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
AndyAO
V2EX  ›  程序员

使用 git,既要用「命令行」也要用「UI」

  •  2
     
  •   AndyAO · 2021-12-08 09:00:13 +08:00 · 9575 次点击
    这是一个创建于 1110 天前的主题,其中的信息可能已经有所发展或是发生改变。

    git 新手另外的困惑主要是集中在命令行和用户界面的选择上。(git CLI 设计太烂)

    感觉在这个用户界面盛行的年代,新手刚开始的时候,往往用的是后者。

    如果你不了解命令行,你就不能够真正的了解 git ,当出现问题的时候,你很难解决,而且你也很难根据自己的需求自动化 git 。

    如果你不使用用户界面,那就意味着你完成各种交互式操作的时候,效率将非常低。

    对于 git 来说,不用命令行是浅薄的,只用命令行是不明智的。

    因为 cli 根本就不适合那种,需要根据各种信息,频繁进行操作的交互式场景,这些挑挑拣拣的工作在版本控制中有很多很多。

    例如,你可能要浏览下当前的工作树改动,然后决定将特定的某个代码块暂存,你可能要在提交之前浏览暂存区中几个文件,因为你不太确定到底发生了什么样的更改。

    git cli 也为此设计了交互式的模式,例如,交互式的添加和变基,但总的来说功能,并不能很好的满足要求,展示信息太少,呈现方式不丰富,操作精准度太差。

    这个时候就要使用 ui ,当然很不推荐使用 gui ,比起敲击单个按键来说,用快捷键的效率实际上并不高。

    况且,要根据不同的情况在 cli 和 gui 之间进行切换也是很麻烦的,用户界面在很多时候不是想用就可以用的。

    最佳的方案是 cli 配合 tui ,它们可以完美互补,无缝衔接,效率要高很多。

    tui 推荐 gitui ,这是用 rust 编写的工具,设计的目标就是「快」,以没有任何卡顿和加载大型项目速度飞快著称。

    关键是即使在 Windows 上兼容性也非常好,不会出现动不动 tui 就完蛋的情况。

    功能也十分简洁,作者的设计目标很明确,就是解决那些 cli 上难以完成的交互式操作,软件尺寸很小,功能很精悍,没有各种各样需求很低的花哨功能干扰使用。

    本来自己是 SourceTree 的忠实用户,更换到 gitui 后相见恨晚,效率提升太大。

    对了,还要注意的是,必须在你的命令行上添加 git 相关 prompt ,这是最基础的,这样你可以实时的看到现在的情况。

    83 条回复    2021-12-15 16:23:35 +08:00
    soulzz
        1
    soulzz  
       2021-12-08 09:13:45 +08:00   ❤️ 14
    jb 全家桶不香吗
    别去腾腾什么第三方 git,都是辣鸡
    szyp
        2
    szyp  
       2021-12-08 09:22:41 +08:00
    tig 了解一下
    princelai
        3
    princelai  
       2021-12-08 09:33:02 +08:00
    lazygit ,但最常用的还是 pycharm+命令行
    yolee599
        4
    yolee599  
       2021-12-08 09:33:46 +08:00   ❤️ 1
    TortoiseGit 了解一下?
    chucongqing
        5
    chucongqing  
       2021-12-08 09:36:42 +08:00   ❤️ 1
    命令行 + vscode 解决冲突查看 diff
    Cyron
        6
    Cyron  
       2021-12-08 09:37:12 +08:00   ❤️ 9
    fork 竟然不是永远的神?
    xz410236056
        7
    xz410236056  
       2021-12-08 09:42:44 +08:00
    @Cyron #6 fork 唯一的优点就是快了吧。。论好看不如 gitkraken (收费且慢),对中文的支持不如 sourcetree
    liudaolunhuibl
        8
    liudaolunhuibl  
       2021-12-08 09:45:31 +08:00
    idea 自带的大多数情况下够用了
    Ginray
        9
    Ginray  
       2021-12-08 09:48:54 +08:00
    说起这个,最新版的 Clion 点击 git push 完全没反应有人遇到过么,用命令行还是可以的。
    shanyuhai123
        10
    shanyuhai123  
       2021-12-08 09:49:20 +08:00
    我在使用命令行时主要是配合 zsh 比较爽,tab 补全历史,直接用的话是不如 UI 。
    timothyye
        11
    timothyye  
       2021-12-08 09:49:48 +08:00
    tig + git 命令行够了
    fjjaylz
        12
    fjjaylz  
       2021-12-08 09:49:55 +08:00
    @yolee599 toroiseGit 唯一的优势就是任意单文件的历史信息查看,其他的都远不如 SourceTree
    cyrivlclth
        13
    cyrivlclth  
       2021-12-08 10:10:35 +08:00
    用了这么多年,会个 push pull commit merge rebase reset 就行了。。。
    libook
        14
    libook  
       2021-12-08 10:12:19 +08:00
    操作推荐 cli ,分析版本历史和 diff 推荐 gui 。

    git 自带 gui 工具,分别是 git gui 和 gitk ,能应付大多使用场景了,其他的就是具体看团队 git 工作流方案是什么,然后再去看是否需要借助一些 cli 或 gui 的工具来提升效率。

    如果是推广帖的话请发到推广栏目。
    coderluan
        15
    coderluan  
       2021-12-08 10:16:07 +08:00
    没人提 github desktop ,我现在基本就用这个了,功能最全确实是 SourceTree ,所以也导致很笨重,TortoiseGit 我印象中很烂,但是不局限与 git ,同系列的 TortoiseHg 是神器,可惜 Mercurial 自己没落了。
    Dvel
        16
    Dvel  
       2021-12-08 10:16:49 +08:00
    用 Rime 大词库的时候发现 Sourcetree 默认不支持大文件 diff ,Fork 支持。
    Exin
        17
    Exin  
       2021-12-08 10:17:03 +08:00
    @xz410236056 source tree 就没中文支持以外优于 fork 的地方了吗?这样的话对大多数人可能 fork 还是最好的选择
    Leviathann
        18
    Leviathann  
       2021-12-08 10:18:18 +08:00
    idea 的 git+映射几个 ideavim 快捷键,配合它本身自带的全界面输入筛选就很好用了
    xz410236056
        19
    xz410236056  
       2021-12-08 10:20:40 +08:00
    @Exin #17 souretree 确实没觉得除了中文哪里比 fork 强,sourcetree 颜值不如 fork ,速度也不如 fork ,大项目卡的要死。
    P233
        20
    P233  
       2021-12-08 10:21:34 +08:00
    没人提 Magit
    geekboy
        21
    geekboy  
       2021-12-08 10:22:17 +08:00
    IDEA 自带的用习惯了
    Vitta
        22
    Vitta  
       2021-12-08 10:22:47 +08:00
    lazygit 可以不
    daliusu
        23
    daliusu  
       2021-12-08 10:32:16 +08:00
    我就用 fork gitx 这种,感觉还挺好使的,就是看看当前文件变化,手动写一下提交信息提交 commit ,有时候查找一下 hash 和 tag 比命令行直观。但是其他操作都是从命令行来,比如 rebase 、merge 、reset 这些,这些从软件操作感觉有点迷糊,还是手动来方便快捷
    jaredyam
        24
    jaredyam  
       2021-12-08 10:39:00 +08:00
    TUI: lazygit
    xiangxiangxiang
        25
    xiangxiangxiang  
       2021-12-08 10:39:34 +08:00
    一直用 fork 看别人的 commit ,挺方便的
    wangchonglie
        26
    wangchonglie  
       2021-12-08 10:50:49 +08:00
    Mac 下体验最好的是什么呢? 目前在用 sourcetree 。
    tobepro
        27
    tobepro  
       2021-12-08 10:52:26 +08:00
    gitk 虽然丑点,但是关键信息简单明了,不需要啥第三方的
    timothyye
        28
    timothyye  
       2021-12-08 11:17:23 +08:00
    @P233 这个……首先得用 Emacs
    yyyyhere
        29
    yyyyhere  
       2021-12-08 11:27:14 +08:00
    gtihub desktop
    fan123199
        30
    fan123199  
       2021-12-08 11:37:19 +08:00
    我是用 idea 自带插件。 我觉得用 ide 集成插件比重新打开一个应用好一些,不会有中断感。
    deplivesb
        31
    deplivesb  
       2021-12-08 11:49:01 +08:00
    有个问题,我看 fork 是需要 49.99 ?还是可以免费?
    aureole999
        32
    aureole999  
       2021-12-08 11:53:41 +08:00
    idea 自带的+1 。主要是 diff 功能很舒服。
    mxalbert1996
        33
    mxalbert1996  
       2021-12-08 11:54:38 +08:00 via Android
    @deplivesb Fork 和 Sublime 是一样的模式,无限免费试用。
    deplivesb
        34
    deplivesb  
       2021-12-08 11:55:23 +08:00
    @mxalbert1996 49.99 就算是咖啡钱那种么?
    msg7086
        35
    msg7086  
       2021-12-08 11:57:34 +08:00
    道理我都懂但是你推的这个 gitui 也没法做复杂的跨分支 rebase/cherrypick 之类的操作啊。
    christopheredwar
        36
    christopheredwar  
       2021-12-08 11:58:12 +08:00   ❤️ 1
    说一个冷门的,smartgit
    Latin
        37
    Latin  
       2021-12-08 11:59:41 +08:00   ❤️ 1
    你发的每一个帖子都在 吐槽
    请问你是 吐槽机器人吗?
    wangsyi13
        38
    wangsyi13  
       2021-12-08 13:29:40 +08:00
    cli+vscode 或 sublime merge
    cslive
        39
    cslive  
       2021-12-08 13:45:10 +08:00
    jb 全家桶自带的
    darksword21
        40
    darksword21  
       2021-12-08 13:47:50 +08:00 via iPhone
    magit
    zxCoder
        41
    zxCoder  
       2021-12-08 14:12:03 +08:00
    ide 都有自带工具
    vanton
        42
    vanton  
       2021-12-08 14:20:13 +08:00
    命令行记不住,git 本身的命令行模式太不友好。
    endoffight
        43
    endoffight  
       2021-12-08 14:28:44 +08:00
    竟然没人推荐 tower
    aasdkl
        44
    aasdkl  
       2021-12-08 14:57:29 +08:00
    虽然用的 IDEA 但是习惯用的是 git gui...
    Chad0000
        45
    Chad0000  
       2021-12-08 15:03:20 +08:00   ❤️ 1
    珍爱生命,能用 GUI 就不用命令行。

    我用 SourceTree ,不敲命令行。
    BeautifulSoap
        46
    BeautifulSoap  
       2021-12-08 15:16:14 +08:00   ❤️ 1
    等等,用 GUI 那肯定是在学习了命令行了解了 git 一定基础上才用 GUI 的啊,难道真有人连 git 基本命令和用法都不学的情况下,直接上 GUI 的吗。git 的机制这么特殊,这样用 GUI 肯定迟早要出事的

    还有 GUI 我个人不推荐 sourcetree 这软件,身边用的人都一个评价:卡成屎。个人 GUI 推荐 fork 。遇到需要处理文件冲突和查看文件历史之类的话,我会用 IDEA 自带的 GUI ,更加高效

    GUI 和命令行虽然经常吵,但是说真的我见多了只用 git 命令行,结果到头来各种无脑 git add *; git commit -m "xxxx"一把梭的了。你这样用命令行还不如来用 GUI ,至少每次提交前还能强制你看到提交内容
    Innovatino
        47
    Innovatino  
       2021-12-08 15:33:12 +08:00
    简单命令用 GUI ,爱惜生命
    复杂命令用命令行,清晰简洁
    hello2090
        48
    hello2090  
       2021-12-08 15:43:04 +08:00 via iPhone
    没有和我一样 sublime merge 的吗
    queuey
        49
    queuey  
       2021-12-08 15:57:49 +08:00
    @endoffight tower 价格太感人了
    webshe11
        50
    webshe11  
       2021-12-08 16:02:42 +08:00   ❤️ 2
    不用命令行是浅薄的,只用命令行是不明智的。
    godwinma
        51
    godwinma  
       2021-12-08 16:05:35 +08:00
    想支持一波作者,但是 50 刀有点太贵了。
    godwinma
        52
    godwinma  
       2021-12-08 16:09:30 +08:00
    @godwinma 说的是 fork
    gzd1214
        53
    gzd1214  
       2021-12-08 16:20:41 +08:00 via iPhone
    @endoffight 太贵了
    Chad0000
        54
    Chad0000  
       2021-12-08 16:23:56 +08:00
    @BeautifulSoap #46 我就是没有学 Git 的基本命令直接用 GUI 的,但学了 Git 的用法和原理以及与 SVN 的不同。
    purocean
        55
    purocean  
       2021-12-08 16:24:36 +08:00
    sublime merge 是我用过最好用的 Git UI 工具
    starsky007
        56
    starsky007  
       2021-12-08 17:05:46 +08:00 via Android
    为什么有些人老是用着命令行,关键是用得不好,很有可能是因为现在网络上流传的教程上都只命令行、再加上没有官方的客户端导致的,所以我提个建议,你们在写教程的时候,一定要重点介绍下 GUI 客户端的使用。
    nino
        57
    nino  
       2021-12-08 17:08:10 +08:00
    体验最好的竟然是 vscode 的一个插件 gitlens ,试试就知道
    moxuanyuan
        58
    moxuanyuan  
       2021-12-08 17:13:29 +08:00
    vscode showhand
    gesse
        59
    gesse  
       2021-12-08 17:23:42 +08:00
    @endoffight
    tower 确实好用,但是 3.0 版本后是订阅制了, 以前买断了 2.0 版本,一直没有升级

    而且 2.0 版本速度很快,3.0 版本界面好像很卡。
    lingxi27
        60
    lingxi27  
       2021-12-08 17:26:42 +08:00
    下一个贴是不是就开始打广告了
    chiaf
        61
    chiaf  
       2021-12-08 17:31:36 +08:00
    @godwinma fork 付款不开代理,显示的是 200 人民币
    nba2k9
        62
    nba2k9  
       2021-12-08 18:00:52 +08:00 via Android
    jetbrains 可能是最好的 git 客户端
    daveh
        63
    daveh  
       2021-12-08 18:26:33 +08:00 via iPhone   ❤️ 1
    @Ginray 插件冲突。
    cppgohan
        64
    cppgohan  
       2021-12-08 18:35:58 +08:00
    @christopheredwar 用了好几年了 :), 感觉比 tower/fork 用的更顺
    DearMark
        65
    DearMark  
       2021-12-08 18:44:03 +08:00
    @coderluan github desktop 和 vscode 搭配,非常舒服
    24bit
        66
    24bit  
       2021-12-08 20:30:49 +08:00
    git cli + magit + idea reslove merge conflict
    AndyZhuAZ
        67
    AndyZhuAZ  
       2021-12-08 21:31:04 +08:00
    jetbrains 用习惯了一换到 cli 就出错😂
    wjx0912
        68
    wjx0912  
       2021-12-08 22:12:05 +08:00
    gitkraken-8.1.1 破解版,界面好看
    theohateonion
        69
    theohateonion  
       2021-12-08 23:00:13 +08:00
    .... 就不太理解 cli 怎么就不好用了。不好用还是因为不熟悉吧
    ispinfx
        70
    ispinfx  
       2021-12-08 23:06:32 +08:00 via iPhone
    @P233 magit 天下无敌
    Finnn
        71
    Finnn  
       2021-12-08 23:46:56 +08:00
    当然是 sublime merge
    jqtmviyu
        72
    jqtmviyu  
       2021-12-09 01:55:30 +08:00
    我是 vscode + GitLens + Git Graph 两个插件.
    尝试过 sourcetree, 卡哭了.
    fork 是下载了一直没用到.
    除了 git add 和 git commit 是用 vscode 的 ui 点点点操作的,其它都是用命令.
    像我这种两个都不精的估计是程序员中的耻辱, 但像 git stash, git reset, git rebase, git reflog 至今不知道怎么用 gui 完成
    ipcjs
        73
    ipcjs  
       2021-12-09 06:29:34 +08:00
    jb 自带才是无敌😎
    kkocdko
        74
    kkocdko  
       2021-12-09 07:00:50 +08:00 via Android
    有没有人觉得楼主是 AI ?
    sadfQED2
        75
    sadfQED2  
       2021-12-09 09:00:50 +08:00 via Android
    @cyrivlclth 我真就只会这几个
    zsp123
        76
    zsp123  
       2021-12-09 09:35:52 +08:00
    @deplivesb 免费的,没有购买只是偶尔有弹窗提示,不是强制购买
    irezpeng
        77
    irezpeng  
       2021-12-09 10:17:48 +08:00
    建议使用 git 命令其实也没几句,熟练使用后使用任何 gui 工具都是相同的,工具只不过是简化了你的操作
    shuimugan
        78
    shuimugan  
       2021-12-09 11:40:50 +08:00
    @BeautifulSoap "见多了只用 git 命令行,结果到头来各种无脑 git add *; git commit -m "xxxx"一把梭的了" + 1 。

    很多时候各种敏感信息文件、代码里写机密信息、辣鸡临时文件、.DS_Store 等,就是这类人提交上去的,提交代码都不 review 的,要是代码仓库泄露了,翻历史都能找到很多好玩的东西。
    comoyi
        79
    comoyi  
       2021-12-09 13:15:00 +08:00
    对比查看差异用 GUI ,其他 Cli
    nine
        80
    nine  
       2021-12-09 15:04:22 +08:00
    SourceTree 很卡么?从来不觉得。
    版本操作一天都用不到几次,真觉得卡可以试一下 Sublime Merge 。

    相反,一直没搞明白使用频率那么高的 editor ,乃们居然能接受卡顿的 VSCode
    moenayuki
        81
    moenayuki  
       2021-12-09 17:24:40 +08:00
    git interface 有两种:magit ,其它
    ilovecqrwx
        82
    ilovecqrwx  
       2021-12-10 23:57:40 +08:00
    jb 自带的 git 谁用谁知道,自动挡才是王道。
    Ginray
        83
    Ginray  
       2021-12-15 16:23:35 +08:00
    @daveh 确实是,非常感谢~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2716 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 08:18 · PVG 16:18 · LAX 00:18 · JFK 03:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.