標籤:
現在,遠程庫已經準備好了,下一步是用命令git clone複製一個本地庫:
$ git clone git@github.com:michaelliao/gitskills.git
要複製一個倉庫,首先必須知道倉庫的地址,然後使用git clone命令複製。
Git支援多種協議,包括https,但通過ssh支援的原生git協議速度最快。
在版本回退裡,你已經知道,每次提交,Git都把它們串成一條時間軸,這條時間軸就是一個分支。截止到目前,只有一條時間軸,在Git裡,這個分支叫主分支,即master分支。HEAD嚴格來說不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是當前分支。
一開始的時候,master分支是一條線,Git用master指向最新的提交,再用HEAD指向master,就能確定當前分支,以及當前分支的提交點:
每次提交,master分支都會向前移動一步,這樣,隨著你不斷提交,master分支的線也越來越長:
首先,我們建立dev分支,然後切換到dev分支:
$ git checkout -b devSwitched to a new branch ‘dev‘
git checkout命令加上-b參數表示建立並切換,相當於以下兩條命令:
$ git branch dev$ git checkout devSwitched to branch ‘dev‘
然後,用git branch命令查看當前分支:
git branch命令會列出所有分支,當前分支前面會標一個*號。
然後,我們就可以在dev分支上正常提交,比如對readme.txt做個修改,加上一行:
現在,dev分支的工作完成,我們就可以切換回master分支:
$ git checkout master
切換回master分支後,再查看一個readme.txt檔案,剛才添加的內容不見了!因為那個提交是在dev分支上,而master分支此刻的提交點並沒有變:
我們把dev分支的工作成果合并到master分支上:
$ git merge dev
合并完成後,就可以放心地刪除dev分支了:
$ git branch -d dev
Git鼓勵大量使用分支:
查看分支:git branch
建立分支:git branch <name>
切換分支:git checkout <name>
建立+切換分支:git checkout -b <name>
合并某分支到當前分支:git merge <name>
刪除分支:git branch -d <name>
當兩個分支的檔案同時被修改的時候,合并會發生衝突。
git status也可以告訴我們衝突的檔案:
用帶參數的git log也可以看到分支的合并情況:
$ git log --graph --pretty=oneline --abbrev-commit
最後,刪除feature1分支:
$ git branch -d feature1
用git log --graph命令可以看到分支合并圖
Git學習筆記4