git clone、git pull和git fetch的區別

基本用法

git clone 

git clone 是將其餘倉庫克隆到本地,包括被 clone 倉庫的版本變化,所以本地無需是一個倉庫,且克隆將設置額外的遠程跟蹤分支。由於是克隆來的,因此 .git 文件夾裏存放着與遠程倉庫如出一轍的版本庫記錄,clone 操做是一個從無到有的克隆操做。git

基本用法:segmentfault

$ git clone <版本庫的URL> [本地目錄名]

若是不指定本地目錄,則會在本地生成一個遠程倉庫同名的目錄。服務器

git pull

git pull 是拉取遠程分支更新到本地倉庫再與本地分支進行合併,即:git pull = git fetch + git mergefetch

基本用法:spa

$ git pull <遠程主機名> [遠程分支名]:[本地分支名]

若是不指定遠程分支名和本地分支名,則會將遠程 master 分支拉取下來和本地的當前分支合併。code

git fetch

理解 fetch 的關鍵, 是理解 FETCH_HEAD,FETCH_HEAD 指的是:某個 branch 在服務器上的最新狀態。這個列表保存在 .git/FETCH_HEAD 文件中,其中每一行對應於遠程服務器的一個分支。
當前分支指向的 FETCH_HEAD,就是這個文件第一行對應的那個分支。通常來講,存在兩種狀況:blog

  • 若是沒有顯式的指定遠程分支,則遠程分支的 master 將做爲默認的 FETCH_HEAD
  • 若是指定了遠程分支,就將這個遠程分支做爲 FETCH_HEAD

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。

From

http://www.javashuo.com/article/p-qfniphxq-gd.html

https://www.jianshu.com/p/c6a0397ec6f5

相關文章
相關標籤/搜索