您的位置:首页 > 运维架构 > 网站架构

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

2017-10-19 15:14 288 查看
首先摘录一段架构师小秘圈发布的对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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  git