git全方位教程-由具體到抽象-摘自架構師小祕圈和runoob.com

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

發佈了23 篇原創文章 · 獲贊 16 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章