git clone 是將其餘倉庫克隆到本地,包括被 clone 倉庫的版本變化,所以本地無需是一個倉庫,且克隆將設置額外的遠程跟蹤分支。由於是克隆來的,因此 .git 文件夾裏存放着與遠程倉庫如出一轍的版本庫記錄,clone 操做是一個從無到有的克隆操做。git
基本用法:segmentfault
$ git clone <版本庫的URL> [本地目錄名]
若是不指定本地目錄,則會在本地生成一個遠程倉庫同名的目錄。服務器
git pull 是拉取遠程分支更新到本地倉庫再與本地分支進行合併,即:git pull = git fetch + git mergefetch
基本用法:spa
$ git pull <遠程主機名> [遠程分支名]:[本地分支名]
若是不指定遠程分支名和本地分支名,則會將遠程 master 分支拉取下來和本地的當前分支合併。code
理解 fetch 的關鍵, 是理解 FETCH_HEAD,FETCH_HEAD 指的是:某個 branch 在服務器上的最新狀態。這個列表保存在 .git/FETCH_HEAD 文件中,其中每一行對應於遠程服務器的一個分支。
當前分支指向的 FETCH_HEAD,就是這個文件第一行對應的那個分支。通常來講,存在兩種狀況:blog
git fetch 更新本地倉庫的兩種用法:rem
# 方法一 $ git fetch origin master #從遠程的origin倉庫的master分支下載代碼到本地的origin master $ git log -p master.. origin/master #比較本地的倉庫和遠程參考的區別 $ git merge origin/master #把遠程下載下來的代碼合併到本地倉庫,遠程的和本地的合併
# 方法二 $ git fetch origin master:temp #從遠程的origin倉庫的master分支下載到本地並新建一個分支temp $ git diff temp #比較master分支和temp分支的不一樣 $ git merge temp #合併temp分支到master分支 $ git branch -d temp #刪除temp
1. 是否須要本地初始化倉庫get
git clone 不須要,git pull 和 git fetch 須要。it
2. 是否能夠指定分支推送到遠程
git clone下來的項目能夠直接推送到遠程,git pull 和 git fetch 須要先執行 git remote add 添加遠程倉庫後才能 push。