git自linux之父發明以來,一直是不少互聯網企業組織團隊協做寫代碼的利器,因此,只要入職公司,無一不要求學會git。linux
作爲剛畢業的小松,已經脫離了畢業生身份,雖然作過一些項目,可是git用得不多,立刻入職了,對於git內心沒底,碰巧看到一位知乎老哥推薦,點進去一看,立馬打開了新世界的大門!學得那叫一個酣暢淋漓,一塊兒來學學吧。 進入這個網站,會看到如下目錄 git
能夠看到這是一個闖關模式,分爲基礎,高級,移動提交記錄和雜項四個部分,我本身感受學完基礎和高級的一部分就已經可以解決工做中大部分需求了。這個操做時提交新的版本,如圖。 git commit 前 sql
執行git commit
複製代碼
不只僅爲了過關,這裏從圖中很清晰的看出,原來是c0,c1兩個提交,而後git commit以後就會多一個提交。
這個master什麼意思呢?就是所處分支的名字,不管你用git commit提交了多少次,c0,c1,c2,c3……都屬於一個名叫master的分支,而master旁邊的星號表示的是當前處於的分支。這樣能夠實現不一樣分支的跳轉,也能夠實現同一個分支不一樣提交記錄的轉換。 若是咱們想回到c1,可是又不想撤銷c2的話,咱們就能夠經過命令讓master指向c1,若是咱們有其餘分支,咱們就可讓星號移動到其餘分支。學習
上面這一段很重要,是理解下面內容的基礎
網站
也就是說,git的本質就是一棵提交的樹,能夠反覆提交不斷修改,可是以前的提交記錄是能夠找到的,每次是誰提交,內容是什麼,時間均可以看到!spa
git branch newImage
複製代碼
執行完 git branch newImage後,顯然,將會出現一個新的分支,你猜猜這個新分支出如今哪裏呢? code
是否是以爲有點奇怪?分支其實並非真正的提交,僅僅只是一個名字,真正的提交記錄是c0,c1!而不管是master仍是newImage都是爲這個分支命名而已,這裏僅僅是新建了分支,並無其餘操做,因此他默認指向原來的提交記錄。 如今,咱們不只要有新分支,並且新分支指向不一樣的提交記錄,怎麼辦?固然是用git commit啦。 執行git commit
複製代碼
這裏爲啥master前進了? 這是必須的,由於*星號表示當前分支,咱們雖然新建了分支,可是當前分支,也就是最下端咱們能看到的仍是master,因此newImage被放到了上面,因此,要想之後在newImage上提交東西,必須先進行切換。
這裏咱們先不輸入 git commit,而是在這以前使用git checkout。cdn
執行視頻
git checkout newImage
git commit
複製代碼
能夠看到,先切換到newImage後,星號落在了newImage上,而後再git commit,就能夠完成新分支指向新提交記錄的建立,不會影響老分支和老提交記錄。 那如何讓兩個分支沒有關係,獨立發展呢?很簡單,只須要切回到master分支,而後再提交一次便可。
執行blog
git checkout master
複製代碼
能夠看到 *號移動到master那裏了。
而後再次執行
git commit
複製代碼
發現兩個分支真正的完成了分離。 是否是以爲很nice,之後想要切換就能夠用git checkout來回移動,左右橫跳啦!
分支創建多了,天然須要合併,這裏的merge就是這個功能,兩個分支,合併後的名字屬於誰呢?一猜就知道,當前分支是哪一個,合併後的分支就是哪一個名字,也能夠說在當前分支master上執行 git merge bugFix,就是將bugFix歸到master中,更好理解。
執行git merge bugFix
複製代碼
爲了表示方便,將bugFix的顏色轉換一下,左邊的命令尚未執行。
如今咱們有兩個分支master和bugFix,咱們但願兩個分支都擁有全部的修改的記錄,因此咱們還要再執行一次git merge master,可是因爲當前分支在master,咱們還要先切換到bugFix中。 執行
git checkout bugFix
git merge master
複製代碼
這樣兩次合併,就使得兩個分支都擁有所有的提交記錄了,咱們新建的兩個分支,最終又合爲一體。
上面的東西雖然少,可是足夠完成不少工做,授人以魚不如授人以漁,網站以下: learngitbranching 我曾在幾個月前試圖學習git,可是不管是博文仍是視頻每每都有講述不清楚或者引發歧義的地方,只有真正的可視化才能讓人弄懂,致敬做者!
一塊兒加油學習git吧,少年。