標籤:
之前介紹了git的最核心功能遊戲存檔式的本地版本管理。這會我們介紹git剩下的兩個核心功能:分支和遠程倉庫。
1.Git遊戲存檔進化版--Git分支
git分支的思想很有意思,git允許我們可以隨時從現有遊戲存檔菜單(還記得這個比喻嗎)中複製出一個或多個新的遊戲菜單,這些新的遊戲菜單都會繼承以往的存檔和檔案,並且在每個遊戲菜單上都可以接著進行存讀檔的操作,更厲害的是,在建立立的遊戲存檔上繼續遊戲(繼續工作),存存取取後,還可以直接丟棄這個遊戲存檔或者瞬間與原始的遊戲存檔進行“合并”!。想想有什麼用途吧,你開啟遊戲進行遊戲主線玩的不可開交,突然發現有兩個副本任務馬上到了到期日,你一時難以抽身,但又捨不得兩個副本任務豐厚的報酬,於是你求兩個好基友和你一起使用了git,你拉了兩個分支給他們,讓他們一人打一個副本,結束後合并兩個人的分支,一瞬間,你既有了主線劇情的經曆,也同時獲得了兩個副本獎勵的金錢和經驗,wow,迅速走上人生巔峰,就是這麼神奇。
當然,天有不測風雲,你的一個不靠譜的好基友在副本中死了100次,你辛辛苦苦攢的裝備全部沒有了,當好基友正心灰意冷的時候,你迅速的刪掉了他的遊戲分支,就當一切都沒發生過就好,你瀟洒的對他報以微笑。就是這麼輕鬆。
千算萬算還是出了差錯,好基友在打副本1的時候使用了你唯一的回城捲軸,而回城捲軸在好基友2那裡還在,現在你要開始合并分支了,可是git卻提醒你git雖好但是不能違背大自然的規律,要求你處理一下這個邏輯上的矛盾,你毫不驚慌,你拿來好基友2的遊戲存檔,對比了一下,發現兩者只有一處不同,就是回城捲軸的數量,於是你告訴git,這個回城捲軸我不要了,再次合并分支,成功!
看懂了嗎?那你差不多就已經瞭解到git分支功能的意義所在,為了避免你忘記,我在這裡再幫你簡單梳理一下:
(1)開發新功能時,可從master分支上拉一個分支,在此分支上一方面享有主分支的所有檔案資源,一方面獨立的開發新的功能模組,如果開發成功,合并分支,增加功能,如果開發失敗,刪除分支,一切都可以當做沒發生過。
(2)正在某分支工作時接收另一個任務,儲存工作台(之後會告訴你怎麼做),新開分支完成任務,合并,回到分支,恢複工作台繼續工作。
(3)當多人合作時,多個分支合并,git會檢查各分支與主分支是否有衝突,比如分支1基於修改了主分支的A檔案,但分支2卻基於A檔案的源檔案,那麼git會讓你自己處理這個錯誤,之後再合并。
好了,到這裡大致講完了git分支功能的原理,現在我們展示一下具體的操作指令:
(1)建立分支:$ git branch <branch name>
(2)切換分支:$ git checkout <branch name>
(3)建立並轉入分支:$ git checkout -b <branch name>
(4)查看分支:$ git branch
(5)刪除分支:$ git checkout -d <branch name>
(6)強行刪除分支:$ git checkout -D <branch name>
(7)合并分支:$ git merge <branch name>(合并某分支到當前分支)
(8)查看分支合并圖:$ git log --graph
(9)儲存工作現場:$ git stash
(10)還原工作現場:$ git stash pop
希望你能明白,分支是個好東西,但你要知道什麼時候用它,什麼時候則不用。
2.Git遠程倉庫
介紹完了git強大的分支功能,我們接著介紹git另一個強大的功能,遠程倉庫。
其實顧名就可以思義,即git允許我們將git倉庫推送到遠程,這有什麼好處呢?主要有以下兩個方面:
- 檔案安全有保障:不用擔心因為電腦故障而導致的檔案丟失,即使有人改壞了遠程倉庫的檔案,每個相關人員本地都會有一份倉庫備份,只要再次提交就好;
- 便於共同開發:通過強大的分支功能,可以多人從遠程倉庫拉下分支,進行不同功能的開發,彼此互不影響,提高了工作效率;
git遠程倉庫的管理和本地倉庫別無二致,所以下面只簡單介紹一下和遠程倉庫有關的git指令:
(1)本地倉庫關聯至遠程:$ git remote add origin <url>
(2)複製遠程倉庫至本地:$ git clone <url>
(3)查看遠程庫的資訊:$ git remote -v
(4)從遠程倉庫更新檔案:$ git pull
(5)將本地修改推送至遠程倉庫:$ git push (通過使用-u origin master推送至master分支併合並)
等等,還沒完,我說過分支遠程倉庫和多人開發的事對吧,那應該還有幾個相關的git指令需要交代:
由於本地建立的分支如果不推送到遠程,對其他人而言是不可見的,因此我們還要熟悉幾個有關推送本地分支的git指令:
(1)從本地推送分支:$ git push origin <branch-name>(如果推送失敗,需要先用git pull抓取遠端新提交)
(2)在本地建立與遠程分支對應的分支:$ git checkout -b <branch name> origin/<branch name>
(3)建立本地分支和遠程分支的關聯:$ git branch --set-upstream <branch-name> origin/<branch name>
好了,至此我已經說完了一遍git相關的重要指令及其意義。這篇文章使我重頭過了一遍相關的知識點,也希望對你也有協助。
(_[~_)
學Git,用Git ②