鍍金池/ 教程/ Java/ git pull命令
Git移動操作
Git推送(push)操作
git rebase命令
Git提交更改
git rm命令
Git使用前配置
git mergetool命令
git tag命令
Git歷史(簡史)
git show命令
Git隱藏(Stash)操作
git checkout命令
git fetch命令
git clone命令
git branch命令
Git安裝設(shè)置
git stash命令
Git標(biāo)簽操作
Git處理沖突
Git刪除操作
git commit命令
Git遠(yuǎn)程操作詳解
Git克隆操作
git diff命令
Git工作流程
git describe命令
Git管理分支
git add命令
git pull命令
git mv命令
git merge命令
git status命令
Git不同平臺換行符問題
Git補(bǔ)丁操作
Git查看更改
Git執(zhí)行變更操作
git log命令
Git修正錯誤
git push命令
Git快速入門
git init命令
Git創(chuàng)建存儲庫
Git重命名操作
git submodule命令
git help命令
git config命令
Git更新操作
Git基礎(chǔ)概念
git remote命令
git reset命令
Git教程
git shortlog命令
Git基礎(chǔ)和原理

git pull命令

git pull命令用于從另一個存儲庫或本地分支獲取并集成(整合)。git pull命令的作用是:取回遠(yuǎn)程主機(jī)某個分支的更新,再與本地的指定分支合并,它的完整格式稍稍有點復(fù)雜。

使用語法

git pull [options] [<repository> [<refspec>…]]

描述

將遠(yuǎn)程存儲庫中的更改合并到當(dāng)前分支中。在默認(rèn)模式下,git pullgit fetch后跟git merge FETCH_HEAD的縮寫。

更準(zhǔn)確地說,git pull使用給定的參數(shù)運行git fetch,并調(diào)用git merge將檢索到的分支頭合并到當(dāng)前分支中。 使用--rebase,它運行git rebase而不是git merge。

示例

以下是一些示例 -

$ git pull <遠(yuǎn)程主機(jī)名> <遠(yuǎn)程分支名>:<本地分支名>

比如,要取回origin主機(jī)的next分支,與本地的master分支合并,需要寫成下面這樣 -

$ git pull origin next:master

如果遠(yuǎn)程分支(next)要與當(dāng)前分支合并,則冒號后面的部分可以省略。上面命令可以簡寫為:

$ git pull origin next

上面命令表示,取回origin/next分支,再與當(dāng)前分支合并。實質(zhì)上,這等同于先做git fetch,再執(zhí)行git merge。

$ git fetch origin
$ git merge origin/next

在某些場合,Git會自動在本地分支與遠(yuǎn)程分支之間,建立一種追蹤關(guān)系(tracking)。比如,在git clone的時候,所有本地分支默認(rèn)與遠(yuǎn)程主機(jī)的同名分支,建立追蹤關(guān)系,也就是說,本地的master分支自動”追蹤”origin/master分支。

Git也允許手動建立追蹤關(guān)系。

$ git branch --set-upstream master origin/next

上面命令指定master分支追蹤origin/next分支。

如果當(dāng)前分支與遠(yuǎn)程分支存在追蹤關(guān)系,git pull就可以省略遠(yuǎn)程分支名。

$ git pull origin

上面命令表示,本地的當(dāng)前分支自動與對應(yīng)的origin主機(jī)”追蹤分支”(remote-tracking branch)進(jìn)行合并。

如果當(dāng)前分支只有一個追蹤分支,連遠(yuǎn)程主機(jī)名都可以省略。

$ git pull

上面命令表示,當(dāng)前分支自動與唯一一個追蹤分支進(jìn)行合并。

如果合并需要采用rebase模式,可以使用–rebase選項。

$ git pull --rebase <遠(yuǎn)程主機(jī)名> <遠(yuǎn)程分支名>:<本地分支名>

git fetch和git pull的區(qū)別

  1. git fetch:相當(dāng)于是從遠(yuǎn)程獲取最新版本到本地,不會自動合并。
$ git fetch origin master
$ git log -p master..origin/master
$ git merge origin/master

以上命令的含義:

  • 首先從遠(yuǎn)程的originmaster主分支下載最新的版本到origin/master分支上
  • 然后比較本地的master分支和origin/master分支的差別
  • 最后進(jìn)行合并

上述過程其實可以用以下更清晰的方式來進(jìn)行:

$ git fetch origin master:tmp
$ git diff tmp 
$ git merge tmp

2. git pull:相當(dāng)于是從遠(yuǎn)程獲取最新版本并merge到本地

git pull origin master

上述命令其實相當(dāng)于git fetchgit merge
在實際使用中,git fetch更安全一些,因為在merge前,我們可以查看更新情況,然后再決定是否合并。


上一篇:git help命令下一篇:git rebase命令