git全方位教程-由具体到抽象-摘自架构师小秘圈和runoob.com

来源:互联网 发布:风险矩阵图什么意思 编辑:程序博客网 时间:2024/05/15 04:29

首先摘录一段架构师小秘圈发布的对git的“通俗”理解,瞬间就知道git的基本操作了有木有  

老司机教你如何使用git来管理小黄书?

  • 胸怀大志的你,立志要写小黄文
    于是你在本机奋笔疾书了三个月,然后电脑硬盘被某白色液体弄坏了...

  • 于是你想:哎,要是我能把小黄文存到远程服务器上就好了,这样就算我本地挂了,我再从远程拷一份,不就666了?

  • 说干就干,
    从此你每次写小黄书时,
    都要在远程服务器里创建一个专门的文件夹,
    存放这本小黄书的章节,以及相关资料
    这就叫做 create remote repository

  • 而在你本地的那个,
    和远程服务器一毛一样的那个,
    每个小黄书一个的文件夹
    就叫做 local repository

  • 但是每次用邮件或者FTP(文件传输协议)来同步 remote 和 local 的 repository,简直麻烦
    于是你搞了一个叫git的程序,帮你管理 repository,
    git init 来 create repository,
    git clone 将 remote repository clone到 local,
    git push 将local  repository clone到 remote

  • 然而,在一个美丽的夜晚
    当你正要 push 到远程时,
    电脑突然断电了,

  • 这可把你气坏了
    原以为有了远程服务器,就可以美滋滋了
    居然会在push到远程之前就搞幺蛾子
    于是你清楚的意识到
    git需要有一个类似ctrl+s的东西
    能让大家实时保存修改
    呕吼,这就是git里的git add

  • 这自从你有了一个小黄书的远程服务器,就再也没因为白色液体而返工。
    于是乎,你的小黄书写的越来越顺手,很多影视都借鉴与你,所以你赚了个满盆盈利
    这是,你琢磨起了组建团队
    毕竟以你的经验,可以监管和指导一群新人来写小黄文
    但新人之所以称为新人,就是因为他们每个人只擅长一部分,比如:
    A只擅长描写日常撩拨,B只擅长写床笫之欢,C只擅长写渲染气氛

  • 你一想:
    如果让他们配合着写,每个人只写自己拿手的
    那不仅质量高,而且并行写的速度快
    客户保证满意

  • 说干就干,
    定好了故事的发展大纲
    然后给ABC各分了一块他们所擅长的部分,让他们去具体写
    两个月后,他们终于写完了,
    虽然拖remote repository的福,到是没有丢失过数据
    当你要去把ABC写的内容合并时
    呵呵呵,
    A的第一段应该在B的第二段后面,C的第一段应该放在A的第一段前面,A的第二段又要跟在C的第二段后面,C的第二段应该放在B的跌三段后面%¥&&%¥#……

  • 绝望吧,
    你必须把ABC写的东西一行行的看过去
    才能理清楚他们写的东西之间的逻辑
    才能将他们写的东西正确的拼凑在一起

  • 摔,这样拼凑简直不是人能干的事
    于是你想了个办法:
    你把最开始定的那个大纲啊,作为master
    让ABC每天都把他们写的东西,都加到mater上
    这就叫做创建分支
    于是有了git branch <newBranch>

  • 啊,这个git branch不管在remote 还是 local都可以进行
    反正相互都会同步的嘛

  • 现在你的团队决定再写一本《我的香艳小秘书》
    于是乎,你在远程仓库里,
    先创建了一个名叫《我的香艳小秘书》的 remote repository,
    现在这个remote repository只有一个默认的 master 的分支,


  • 然后git clone到你在本地,把大纲写到master分支后



  • git push 到 remote repository的 mater 分支,


  • 你又用 git,基于 master 分支,给ABC分别创建了一个分支,


  • 然后 ABC 每个人,在本地用 git clone 了 remote repository,
    啊哈,ABC 就都在本地都有了一个名叫《我的香艳小秘书》,
    但处于不同分支的 local repository


  • 诶呀呀,
    C第一个完成了第一天的工作,
    于是C开开心心的把push到自己在remote repository里的分支
    正准备收工,溜的时候,想起你要求他们:
    每天下班时要把自己的分支和master分支合并
    于是C在remote repository里,将自己的分支merge到了master分支

  • 终于A也终于写完了,A也push到remote repository
    但当A要merge到master分支时,
    master不知道要把A新加的东西,是放到C新加的东西的前面,还是后面,还是里面...
    于是不得不拒绝A 的merge请求,

  • orz,A就只好先在自己本地的分支里手动合并,
    即:把C增加的东西放到合适的位置上,
    再git push 在A的remote 分支,
    之后再merge 到 master分支,
    这就叫做解决冲突

  • 但第二天早上你一看master,有几句的是什么狗屎哦,
    于是你把A叫过来一顿臭骂,
    然而这几句是C写的...
    于是你决定,在git push前时候要加上一些信息
    能让你知道是谁写了啥
    于是乎,git commit出现了

  • 并且!!!
    不能随意的merge到master上
    万一merge了一堆狗屎咋办!!!
    必须提一个pull request请求给你

    等你审核过后
    才能进行merge到master上

-----------------------------------------------------------------------------------------------我是分割线------------------------------------------------------------------------------------------------------------------------


看完上面的描述,相信你对git有了大体的理解,老司机的水平毕竟不是盖的。好的,接下来附上一个链接地址,花30分钟读完全部章节,相信你就完全明白了

http://www.runoob.com/git/git-tutorial.html