• Awesome Ruby China at 2018年07月27日

    @msg7086 , 我承认你说的大部分都是对的, 反倒是我第一时间看到你的观点时, 对你的有些话有些误解, 这里我道歉.

    其实我也用很多 GUI 工具, dbeaver 用来连接数据库, beyond compare 用来目录同步, 文件比较, 只是更倾向于不依赖于这些工具而已, 可能是目前我的操作方式够用, 没有更多的需求的缘故, 如果到那个地步, 又有足够易用的, 让我心动的工具可用, 我也会选择他.

  • Awesome Ruby China at 2018年07月27日

    对了,你提到你用了update_base dev,请问这玩意儿支持3-way merge吗?能做成左+中+右diff界面吗?能高亮显示段落差异和行内差异吗?

    以前用 Beyond Compare 执行 3-way 合并, 现在也会在提交代码前, 用这个工具 code review 一遍.

    但是后来发现, 其实不好用 (可能 bc4 这方面比较弱吧, 常出错), 最快的方式反倒是直接用编辑器逐个文件编辑来的最快.(这也是 Ruby China 社区一个大牛曾经提醒我的, 直接搜索 <<<<<<, 自己编辑解决冲突, 效果不错)

  • Awesome Ruby China at 2018年07月22日

    本来只是来顶楼主小哥的, 没忍住, 歪楼了. 😄

  • Awesome Ruby China at 2018年07月22日

    我不完全是这个意思,但是我觉得该说的我已经说了,能理解的人也应该已经理解了,不能理解的人不管说什么大概也不会理解,所以我不想再翻来覆去重复那些话了。如果大家想继续讨论的话当然没问题。如果有人还想杠的话我就直接Block得了。时间宝贵,不想浪费在无谓的争吵上。

    我的观点是任何一个对Git有比较复杂需求的人都应该用GUI辅助而不是裸撸CLI,从来不会犯错而且手速飞快or闲得没事干的人除外。

    困了,睡了。

    好吧, 本来不想再说了, 因为很多原因, 我虽然加入 Ruby China 好几年了, 也不常来, 但是实在是不能忍了, 从一开始, 你定调的口气

    Git你需要一个牛逼的GUI。光用命令行,几乎干不了什么复杂的事情。

    我觉得就已经把整个 Ruby China 社区受众的理解能力的 level 降低了不止一个档次, 这种话如果你实在一个 巨硬 产品主导的社区发出来, 可能会大受赞赏, 但是却偏偏在一个命令行操作挺多, 而且 Ruby 语言本身其实和 CLI 很有渊源的一个语言之上谈这个, 就有点小瞧社区的大众了.

    我说的是 用命令行,几乎干不了什么复杂的事情,主语是人,说的是人类的能力无法达到充分利用命令行赋予的功能。

    我只能说越解释越黑, 很明显你也拉低了 linus 的智商, 你写这么复杂的 git 功能干嘛? 是让人用的吗?

    但是我觉得该说的我已经说了,能理解的人也应该已经理解了,不能理解的人不管说什么大概也不会理解,所以我不想再翻来覆去重复那些话了。

    我真的觉得, 只有你自己在认为, 和你争论的这些人不理解. 😅

    如果大家想继续讨论的话当然没问题。如果有人还想杠的话我就直接Block得了。时间宝贵,不想浪费在无谓的争吵上。

    好吧, 也许你时间宝贵, 但是你不这样自我的将自己的那一套GUI工具当作使用 git 的救世主来这里传教, 没人愿意花费时间和你争论.

  • Awesome Ruby China at 2018年07月22日

    请问你最后的图每次合并分支都是通过 rebase 吗?能分享下你们是按照怎么样的流程走的呢?

    这位小哥, 我猜的没错的话, @msg7086 在合并代码前, 会要求 feature 代码的开发者, 做 rebase 然后重新强推一下.

    假设, 你要合并 feature/new_feature 到 dev 分支, 你需要首先 checkout feature/new_feature 分支, 然后运行 update_base dev(参见之前回帖写的那个函数), 解决冲突(如果有), 然后强推 git push --force origin feature/new_feature

  • Awesome Ruby China at 2018年07月22日

    emacs 的 magit 算 git 的 GUI 吗?

    这玩意儿超级强大的, 因为太强大, 所以我一直没敢用, 还在用一个很老的包(git-emacs) + 自己的 hack,

  • Awesome Ruby China at 2018年07月22日

    我说的是 用命令行,几乎干不了什么复杂的事情,主语是人,说的是人类的能力无法达到充分利用命令行赋予的功能。

    感觉这个还是反的, 最复杂的事情, 都一定要通过命令行来自动化, 如果 git 的标准命令你觉得有点麻烦, 你可以写个 bash wrap 起来, 我自己写了大把的类似的脚本, 只是为了让我操作 git 时提供便利, 这就是为什么有了 git, 还有 git-flow, 有个 docker, 还有 docker-compose.

    客观而不带任何偏见的讲, 如果你的话是对的, Linux/BSD/Unix 真的没有存在的必要了, 每个人工作方式不一样, 你喜欢 IDE, 习惯工具, 却认为别人用命令行干不了复杂的事情, 有点以偏概全了.

    为了增加信服力(不是我信口雌黄), 贴一下 git 相关的脚本目录: (虽然不是每个脚本都常用, 其实就是心血来潮, 写个脚本, 当作笔记而已)

     abort*               cob@       fork*    gitb*                      gitdiff@                    gitll@                         gitv*           push*           skip*
     add*                 cofile*    fork1*   git-bcompare*              gitdiffc@                   gitls*                         gitzip@        'push!'@         stash*
     add_key_to_github*   com@       gc*      gitc*                      git-diff-wrapper*           gitls1@                        merge*          rebase*        'stash!'@
     anno*               'com!'@    'gc!'@    gitcat*                    git_find_big_files*         gitm*                          merged*         rebase_log*     stashp@
     clean*               commit*    gca@     git_clean_merged_branch*   git_find_blob_commit*       gitrm*                         merge_dev*      reflog*         submodule*
    'clean!'@             cont*     'gca!'@   gitcp*                     git_find_dangling_object*   gits*                          merge_ours*     remote*         swap*
    'clean!!'@            cor@       gcp*     gitd*                      git_find_delete_file*       gitsize*                       merge_theirs*   reset*          track*
     clean1@              cov@       gd@      gitd1@                     gitfsck*                    git_squash_branch_to_commit*   mergetool*     'reset!'*        unreset*
     co*                  drop*      gd1@     gitdc@                     github_create_repo          gitss*                         pop*            show*           up*
    'co!'@                fetch*     gdc@     gitdd@                     gitinit*                    gitsub*                        pull*           shown*          upa@
     coa@                'fetch!'@   gg*      git_delete_big_files*      gitl*                       gittar*                        pullups*        show_restore*
    

    再贴的你应该懂的最常见的命令:

    function update_base () {
        branch=${1-develop}
        git checkout "$branch" &&
            git pull origin "$branch" --rebase &&
            git checkout - &&
            git rebase "$branch"
    }
    
    
  • Awesome Ruby China at 2018年07月22日

    咳咳, 我觉得你说的的确是反的, 只有 UI 做不到的, 没有 命令行做不到的, UI 都是调用命令行.

    下面是普通的 git 命令行输出, 不是一样有你截图的效果? (添加 --graph 参数即可)

     1  *   16299e9 - (HEAD -> develop, origin/develop, origin/HEAD) Merge branch 'release/1.6.0' into 'develop'(29 hours ago,tracy)
     2  |\
     3  | * 38cd519 - (origin/release/1.6.0, release/1.6.0) 🐛 修复feed物理删除引发的问题(29 hours ago,tracy)
     4  | * b890266 - Fix clazz.grade bug(30 hours ago,Billy.Zheng)
     5  |/
     6  * c9efa4f - update graphql_controller(31 hours ago,Billy.Zheng)
     7  * 54142be - refactor graphiql_basic_auth(31 hours ago,Billy.Zheng)
     8  *   1fd379a - Merge branch 'feature/update_1.8' into 'develop'(31 hours ago,Billy.Zheng)
     9  |\
    10  | * 2c408a8 - (origin/feature/update_1.8) comment test(31 hours ago,Billy.Zheng)
    11  | * 6417971 - refactor feed_connection(31 hours ago,Billy.Zheng)
    12  | * 32e8141 - Fix test(31 hours ago,Billy.Zheng)
    13  | * 738b3be - Add schema.grahpql(32 hours ago,Billy.Zheng)
    14  | * 74a538a - delete recruit_image api(32 hours ago,Billy.Zheng)
    15  | * 0aaa961 - delete delete_image api(32 hours ago,Billy.Zheng)
    16  | * 8ee8140 - update fields to 1.8(32 hours ago,Billy.Zheng)
    17  | * 54b3428 - fix query name(32 hours ago,Billy.Zheng)
    18  | * b7a59f9 - remove all require in graph folder(32 hours ago,Billy.Zheng)
    19  | * 19553b6 - replace @context to context(32 hours ago,Billy.Zheng)
    20  | * 456cfa6 - replace @object to object(33 hours ago,Billy.Zheng)
    21  | * 03789db - remove loaders require(33 hours ago,Billy.Zheng)
    22  | * 38457a6 - update enums(33 hours ago,Billy.Zheng)
    23  | * d8fab81 - move global constant to initializer(33 hours ago,Billy.Zheng)
    24  | * e909d23 - Update sequel config(33 hours ago,Billy.Zheng)
    25  |/
    26  *   f508b67 - Merge branch 'release/1.5.0' into develop(33 hours ago,Billy.Zheng)
    
  • Awesome Ruby China at 2018年07月22日

    这个帖子必须支持!

  • 我们也招聘 Ruby 工程师哦.

    https://ruby-china.org/topics/34607

  • 正确的做事方式:
    • 永远不要再次打断自己.
    • `卡马克式' 的专注.
    • 重要的事情, 立即写下来

不确定的事情不纠结, 不确定的想法不纠结, 不确定的感觉不纠结. 真正的接纳, 意味着要放下过去的不完美.