首先摘录一段架构师小秘圈发布的对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