V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Mark24
V2EX  ›  程序员

15 分钟学会 Git,立刻投入生产力,不服来战,哈哈

  •  
  •   Mark24 ·
    Mark24Code · 2015-07-29 00:00:48 +08:00 · 13070 次点击
    这是一个创建于 3404 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一直写到23:54 = =b
    好辛苦

    本来下午写了个帖子,结果V2EX,300秒之后就不能改动帖子了,不利于修改和检查错误
    现在把文章移到Github上了,可以即使的及时反馈修改

    所谓编程入门从版本控制开始
    不想走弯路的同学,可以过来看看哟

    https://github.com/Mark24Code/15minGit


    无法访问Github的同学,这有Host文件,自行替换
    链接: http://pan.baidu.com/s/1pJqqEvD 密码: e5ce


    第一次写文章,大家多多关照

    139 条回复    2015-08-28 18:46:56 +08:00
    1  2  
    sodatea
        101
    sodatea  
       2015-07-29 11:27:40 +08:00
    @Mark24 「至于为什么迁移到Git?因为能完成分布版本控制的,只有一个嘛,有胜于无」
    完全是胡说……hg 也是分布式版本控制工具好嘛,而且是跟 git 几乎同时诞生的。

    git 现在这么流行很大程度上是 github 的功劳……
    Mark24
        102
    Mark24  
    OP
       2015-07-29 11:30:05 +08:00
    @sodatea 一会改成,“因为Github的功劳”,把你的名字加进去,因为你找到了bug,嘻嘻
    dcoder
        103
    dcoder  
       2015-07-29 11:35:33 +08:00
    @Mark24
    给入门的看不错,
    不过我觉得 remote repo pull 到 workstation 那个箭头有待商榷,
    因为没有直接反映出 local repo 其实也改变了的事实, 这个很重要.
    silvernoo
        104
    silvernoo  
       2015-07-29 11:35:56 +08:00
    CLI才是最终归宿,已unstar
    Mark24
        105
    Mark24  
    OP
       2015-07-29 11:38:44 +08:00
    @silvernoo 懂得Source Tree的人,学 CLI 只会更快 (*^__^*) 两栖作战
    Mark24
        106
    Mark24  
    OP
       2015-07-29 11:39:09 +08:00
    @dcoder 可以提交错误,欢迎指正(*^__^*) 嘻嘻……
    oska874
        107
    oska874  
       2015-07-29 11:56:17 +08:00
    @anthonyeef 我以为是github 的呢。
    codepiano
        108
    codepiano  
       2015-07-29 11:56:23 +08:00
    我写了这种没有一点用处的标题党瞎喷文章是绝对不敢跟人伸手要钱的
    username10086
        109
    username10086  
       2015-07-29 12:01:31 +08:00
    我看有的设计师开始倒腾Git 除了装逼和前端发展 能说下这个还有其他什么意义吗
    Mark24
        110
    Mark24  
    OP
       2015-07-29 12:14:38 +08:00
    @username10086 你肯定不是设计师╮(╯▽╰)╭
    Mark24
        111
    Mark24  
    OP
       2015-07-29 12:33:01 +08:00
    吃饱饭了,看看留言

    这个世界,总是有一撮,对新人真的是不友好
    给小白出一个教程,现在都遭到人身攻击了

    ╭∩╮(︶︿︶)╭∩╮
    反正一律无视
    no can no BB

    正能量的小伙伴,还会蛮多的,喜欢你们

    想拉低了Git的使用门槛
    感觉阻力重重

    门槛降低是好事
    ~\(≧▽≦)/~啦啦啦

    纠结那么多干嘛
    这里的GUI只能保证日常操作
    有的同学说得对--CLI是最终的道路
    我也没有否认

    CLI 和日常使用,一毛关系都没有
    用GUI,基本上可以覆盖,提交,分支,合并,解决冲突
    其他的,特殊情况,特殊对待

    与赏心悦目的GUI相比,等个几秒,算个毛,我就愿意!
    哼(ˉ(∞)ˉ)唧
    就是辣么任性~

    大神敲CLI ,我用GUI,我就慢一点,哼哼,咋滴

    大神们都在叨叨用CLI 呀 = =b

    对小白说是两码事,要计算时间,我们得谈谈历史问题,快不快,得算上你学习CLI 时间。
    小白看GUI,了解流程也就是15分钟,看完《Git 社区手册》巴拉巴拉巴拉各种教程,并且熟练操作CLI 可不是这个时间。

    否则这个标题也不会引来这么多人
    因为你们都不愿意承认,Git的学习确实很费时间,而且不直观,很难学,也很难用
    要不然为毛还要图形界面???

    GUI 并不是 CLI 的对立面。相辅相成。

    小白可以直接用GUI 可以加深对CLI 的理解,进而学的快点,你觉得呢?为什么一定要用CLI 呢?
    哪个快就用哪个,按需求来使用。
    能鼠标点一下,为毛要敲键盘……我无法理解啊?

    GUI 之所以那么 流行,就是因为并不是每个人都需要超级复杂的操作,并不是每个人都是程序员。
    ++++++++++++++++++++++++++++
    Git 可以用来写日记,写博客,合作出书,写教程,写菜谱,备份数据……
    ++++++++++++++++++++++++++++
    不光是来码代码

    所以啊……
    楼下的,再谈论,熟练CLI 是必备的……其实是有局限的

    本篇教程,就是来给小白的O(∩_∩)O~

    Git这么优秀的工具,光写代码,实在浪费

    物尽其用
    anthonyeef
        112
    anthonyeef  
       2015-07-29 12:54:25 +08:00   ❤️ 5
    @Mark24 我暂时 unblock 了你,就为了能完整地看你在这个帖子下面的回复。

    你还没看懂吗?根本不是你以为的
    “这个世界,总是有一撮,对新人真的是不友好
    给小白出一个教程,现在都遭到人身攻击了 ”

    而是你写的这篇东西,真的很差。

    跟我是不是大神没有关系,跟你是不是刚接触 Git 工作流的新人没有关系。而是这篇东西真的很差,差到连教程都谈不上,只能算是你自己的流水帐。

    你自己口口声声是为了能让更多的人能熟悉 Git 的使用,能够让小白快速学会 Git ,然后不惜给评论里吐槽你的人戴高帽,“对新人不友好”“人身攻击”。

    不,并不是。我是对事不对人,我是单纯地觉得这篇东西是在 bullshit :

    行文没有逻辑,内容混乱,标题说的是 Git 教程,结果内容更像是一篇 sourcetree 使用图解;

    写作的人不知所云不只所以然,自我感觉良好,“我就是小白,所以所有批评我的大神们都是看不起小白”;

    骗 Star;


    所谓的命令行更困难,图形界面对新人更友好,这样的说辞也就只能看看罢了。学习什么东西不困难?学习 Git, 理解 Git 工作流,本来就是有一个学习曲线。你说的 GUI 可以更好理解,我同意,但你是在把学习本身所需要付出的努力,以及掌握 Git 所需要付出的时间,一股脑地推到了命令行上。

    我是对事不对人的。但真的有那么一刻,我对你产生了无法抑制的厌恶:对不熟悉的东西作出不恰当的评价、自己没有努力掌握就吐槽(吐槽V站的发帖设置、吐槽 Git、吐槽 Javascript)、强行给不同意你看法的人下定义划分群体、辩论的时候首先把自己放在受害者和弱者的一方。

    小白看到了你写的东西,是没有办法真的掌握 Git 的。你扭曲了刚接触 Git 的人对 Git 的第一印象,夸大了命令行操作的困难度,也造成了一种“既然有好用的图形界面工具,就可以不去接触命令行操作”的错觉。

    最后是,你敢于在 V站放这一篇 bullshit,就要做好心理准备去接受批评。

    我重新 block 掉你了。不会在这个帖子下面更多回复。
    neoblackcap
        113
    neoblackcap  
       2015-07-29 12:59:22 +08:00
    @Mark24 不是追踪的问题,是你库里面放几个二进制文件,然后你的库一迭代上去,就很容易爆了。这个显然就要用什么submodule,或者另外建一个库去解决,但是跟其他vcs比起来,这样的解决方式显得又不是那么自然
    li24361
        114
    li24361  
       2015-07-29 13:24:27 +08:00
    @anthonyeef 本来想说什么的,看你是大三,就算了,到社会上多看看吧,在象牙塔里面年轻气盛没什么用
    simo
        115
    simo  
       2015-07-29 13:33:24 +08:00
    发感谢、fork以资鼓励:)
    sincc
        116
    sincc  
       2015-07-29 13:34:40 +08:00
    @li24361 我到是感觉 @anthonyeef 说的挺好的,没什么问题,到是楼主年轻气盛
    Mark24
        117
    Mark24  
    OP
       2015-07-29 13:54:12 +08:00
    你们别争了,看下面的,告诉我,你们在纠结啥?
    ===================================

    Git直接用,很难用,学习时间长,而且……不是每个人都会敲,都想敲命令行,Git也不是只有敲命令行,才能用

    现在有一个叫做Source Tree的东西,可以充当润滑剂,能不让你那么痛苦

    可是你还需要懂点Git的东西,比如Git的工作流程,Git基本的commit,push,branch,merge,revert,checkout,discard……意味着什么

    明白Git的工作流程,配合上Source Tree
    好了
    发现,即使不敲命令行,也可以愉悦的使用Git了

    你可以写代码,可以写Blog,写书,小团队配合起来写文档……

    然后有一天,你突然觉得,有一个复杂的现象,Source Tree解决不了
    怎么办?

    大神们给出了各种命令解决方案的思路,并且甩出了各种命令
    你发现
    梳理了大神给出的思路
    你既可以点点鼠标,分解完成
    因为无非你就是要用Git这么个东西,你可以回退历史版本,你可以创建合并分支,有的时候还需要解决冲突……有的时候只是多几步,多点几下

    经常用ST,各种按钮commit,push,branch,merge,revert,checkout,discard……
    按钮上的命令都熟悉了

    这个时候,大神们的各种命令炫技,多少也能看到有这些关键字
    你的经验能帮助你感觉到,大概一二,剩下就是查查命令还有参数

    再去翻翻手册,讲出的各种命令,也是你的经验之内

    具体的再来V2EX找人指导

    Any Question?
    Mark24
        118
    Mark24  
    OP
       2015-07-29 14:02:15 +08:00
    @neoblackcap 虽然不太明白你在说什么,但是感觉好厉害的样子~
    littlexiang
        119
    littlexiang  
       2015-07-29 14:11:31 +08:00
    @Mark24 不需要开JetBrain的时候, 我一般vim+cmd就够了...
    Linux的桌面只是为了开QQ和Chrome...
    dcoder
        120
    dcoder  
       2015-07-29 14:13:10 +08:00   ❤️ 1
    @Mark24
    哈哈, 不错, 能坚持自己的想法
    syv2
        121
    syv2  
       2015-07-29 14:39:34 +08:00   ❤️ 5
    对于新同学,会经常有这样的困惑:我提了问题,我想学习,我想分享,我想提升,为什么大家对不友好?

    每次看到这样的情况,我都蛮愿意分享下自己的一些心得,但愿能为你提供点帮助。

    1 对于软件开发行业,一通百通真的是非常非常常见,根据我的观察,新同学们问的许许多多的问题,其实完全是基础知识不牢固,又急于解决,只想听答案,根本不想听什么原理,大家在回答这类问题时,出于好意更多地愿意说说原理方面的知识,新同学根本不领情,也根本不在乎,时间久了,大家觉着挺没意思的,这样教人真没意思;

    2 根据我的观察,很多人在学校里只学学工具的使用,而轻视原理,学什么东西都非常重视工具,觉着工具好工具好,这点非常不好,把自己局限在某一工具上了,不会有更深入和更长足的发展;

    3 经验是非常重要的一件事,没有新理念出来之前,大家比的就是经验,新同学往往觉着别人太迂腐,其实大家都差不多,GUI 和 CLI 并无本质上的区别,但是当别人的操作经验比较多的时候,最好能谦虚一些;

    4 分享是美德,但是切记不要班门弄斧,以本文为例吧,楼主提出文章能吸引这么多人来看,说明大家对这个话题还是比较关注的,确实是这样,对于日常的应用来说,大家用的最多的也就那几条命令,进来看看是为了看是不是有新东西,结果好像并不如意;

    5 写文档,写教程,为了整理也好,为了让别人看也好,请专业,行文方式和遣词造句一定要正式,楼主这篇教程,写的跟QQ上跟别人闲聊似的,完全不是个文档的样子,这样说楼主可能会觉着委屈,觉着自己写的这么生动,为毛大家不领情啊?说真的,请专业,请专业,请专业。
    dustinth
        122
    dustinth  
       2015-07-29 14:42:55 +08:00
    这篇属于看了评论我不放心了系列...
    syv2
        123
    syv2  
       2015-07-29 14:46:13 +08:00   ❤️ 1
    加点个人好恶:「生产力」 这个词,真是被用滥了。讲「生产力」的时候,是指产出,是具体有价值的成果,而不是操控工具提升效率,大多数人的经验和智商,还轮不到说自己「产出」的东西有多少价值,更何况是否有价值这件事,本身就是别人或社会来评定的,自己给自己个好评说生产力棒棒的,算怎么回事?
    GuangXiN
        124
    GuangXiN  
       2015-07-29 15:16:03 +08:00   ❤️ 2
    我不相信任何15分钟学会xxxx的文章,以前看过十分钟教你学会C语言,结果只是教你写出Hello world。就连SVN那么简单的东西15分钟顶多听人讲一遍,或者看一遍教程,能记住几个常用命令跟着试一遍就不错了,根本不可能“学会”,更何况是git这种复杂的版本控制工具?你要是改成七天Git入门教程还有点谱。

    然后随便看了看你的教程正文,干货不多,吐槽废话一堆。

    你说git的设计就是一坨狗屎,甚至没有设计。你之所以会有这种感觉,是因为你根本没接触过像Linux内核那么复杂的软件项目。甚至连一个商业公司里的20个程序员协作开发的项目你都没做过,你从来没遇到过SVN在处理分支合并上有多么痛苦,根本不明白同事commit一段代码你不update不能commit,update之后尽管没有冲突但是代码根本连编译都过不了是什么感觉,恐怕你更想不出Linux内核需要在全球上千家公司、开源组织、学校之间,在数以万计的程序员之间协作是一种什么情况。

    你以为把clone add commit push pull等等命令讲一遍就叫学会git吗?等你真正理解了git每个命令的功能和这些功能为什么被设计出来,明白了他们的设计者是要解决什么实际代码管理中遇到的问题之后,回过头再看看svn你就会发现它简直就是给非程序员用的玩具。你说的没错,SVN的主线傻子都能看明白,然而它也就做到这个水平了。还设计的典范呢,北京地铁只有一号线和二号线两条线路的时候,随便你怎么画地铁路线图都能成为设计的典范,到现在二十几条线路纵横交错的时候你连能简单清晰地让人找到换乘路径这才是真工夫。至于Linus为什么选择git,那是因为svn这种单中心的版本控制系统根本无法应对Linux内核开发组面临的实际状况,而分布式版本控制系统里hg是用Python实现的,而且代码仓库里保存的是diff,性能根本跟不上一个巨型代码仓库的需求。hg在历史只有几万个commit,和几十个branch并存的情况下表现良好,但是如果有上千万个commit和上万个branch的时候就慢得跟蜗牛一样。

    Git的流行当然少不了Github社区的推动作用,在SourceForge还在玩CVS的时候Google Code用SVN和hg抢了不少生意,可是Github一发展起来,他们都趴了,原因我没分析过,反正事实是很多人先听说Github然后才知道git。

    顺便再吐槽一下你吐槽JS,JavaScript是现在唯一广泛流行的lambda语言,虽然它有着像C一样的语法,支持指令式编程,但JS的语言模型的实质是函数式语言。JS的确是10天就设计出来第一个版本,可是时至今日,JS已经发展了多少年,你真的以为后期就没有任何人改进和完善它吗?至于你说的Python,我还是头一回见到一种广泛流行的语言居然3.x和2.x不兼容,各种库都要重写,呵呵。

    TortoiseGit为什么那么烂,因为那是一帮做SVN的家伙搞的啊,他们想把SVN的所有概念都硬套到Git上面来,让他们的用户可以保持SVN的使用习惯,这种做法完全就是一个Joke。

    至于你说SourceTree有多好多好,我同事有用的,他到今天还是记不住checkout、branch、origin这些单词怎么拼写。当然我懒得跟你争GUI和CLI哪个好,你开心就好。但是git这种程序员用的工具CLI遇到问题Google一搜解决方案一大把,而GUI搜半天找不到有用的答案,写邮件给GUI的开发者然后等三天才有人回复这是不争的事实。

    如果你真的想写一篇好的教程,多写点知识性的东西,把Git的基本模型图翻译一下,指令讲解一下,流程介绍一下,工作中常见的问题分析一下,少胡乱吐槽舒发情感。
    Mark24
        125
    Mark24  
    OP
       2015-07-29 16:12:26 +08:00
    @syv2 受教,我特别关注你辣~\(≧▽≦)/~啦啦啦
    Mark24
        126
    Mark24  
    OP
       2015-07-29 16:15:41 +08:00
    @GuangXiN 引用“如果你真的想写一篇好的教程,多写点知识性的东西,把Git的基本模型图翻译一下,指令讲解一下,流程介绍一下,工作中常见的问题分析一下。”
    我是打算这么做的
    后期整理一下吧,现在才完成了一小步

    同学这么卖力回复,直接特别关注

    多多指正
    我会努力的啦
    Mark24
        127
    Mark24  
    OP
       2015-07-29 16:16:03 +08:00
    @dustinth 我会努力的O(∩_∩)O哈哈~
    Mark24
        128
    Mark24  
    OP
       2015-07-29 16:22:48 +08:00
    看了很多人的吐槽

    学到了很多,有的同学及其认真
    以至于我觉得目前写的东西对不起他们浪费的时间
    一种愧疚感……油然而生……哎

    总之嘛,大家各取所需,不必太认真……我个人的吐槽
    Github上欢迎指正错误
    文档持续改进ing

    今天公司大神给我们开会啦,受益颇丰
    看来为了写好教程,我得深入学习Git啦

    都怪这标题起的
    应该叫《Source Tree入门指南--->点点鼠标也能用Git》

    O(∩_∩)O哈哈~
    djyde
        129
    djyde  
       2015-07-29 16:25:32 +08:00
    @Mark24 我是小白的时候就用 cli。。
    Mark24
        130
    Mark24  
    OP
       2015-07-29 16:30:46 +08:00
    @djyde 我也用,后来不用了,懒得打,我比较懒
    Mark24
        131
    Mark24  
    OP
       2015-07-29 16:34:59 +08:00
    @syv2 你的吐槽,是我提高的动力,给你10个铜币,慰劳你打这么多字

    我觉得,不管有人捧,还是有人吐槽

    都是我努力的动力,O(∩_∩)O哈哈~
    Mark24
        132
    Mark24  
    OP
       2015-07-29 16:36:21 +08:00
    @anthonyeef 虽然你Block我了,但是你说的我都听进去了,给10个铜币,陌生人,还给我打这么多字,也是缘分。你的吐槽是我的动力,我会努力的~
    laosb
        133
    laosb  
       2015-07-29 17:05:46 +08:00
    @syv2 非常赞同。
    kiray1
        134
    kiray1  
       2015-07-29 17:47:56 +08:00
    全文总结:就是推荐了一个source tree的客户端
    neoblackcap
        135
    neoblackcap  
       2015-07-29 17:54:21 +08:00
    @Mark24 要不你试试commit一个100M的镜像文件进库里面,然后随便改下其他的文本文件,多commit几次,你再看看库的大小。git的机制就决定了它若是有二进制文件就会导致库的大小快速递增。

    同样的事情可以用svn, perforce, hg分别试试
    abmin521
        136
    abmin521  
       2015-07-30 05:11:59 +08:00 via Android
    一天就300星了 这么快
    shn7798
        137
    shn7798  
       2015-07-30 08:54:57 +08:00
    @Mark24 请问里面的流程图用什么工具画的?感觉很不错哦, 谢谢!
    bdbai
        138
    bdbai  
       2015-07-30 09:55:45 +08:00 via iPhone
    @Mark24 无论是日常还是复杂场景,命令行都是实打实的操作;GUI感觉软件做什么,以及产生的副作用自己完全不清楚,个人还是倾向命令行一点。新人入门命令行没有你说的这么难,冲突处理之类的也很清晰。
    个人认为新手教程讲一些基本概念足够了,接下来看读者兴趣吧。
    JohnSmith
        139
    JohnSmith  
       2015-07-30 11:05:55 +08:00
    cli + history 其实还好
    gitcafe
        140
    gitcafe  
       2015-08-28 18:46:56 +08:00
    可以试试看 GitCafe 做个自己的小博客哟~
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1053 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:27 · PVG 03:27 · LAX 11:27 · JFK 14:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.