首先摘錄一段架構師小祕圈發佈的對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