本地的分支並不會自動與遠程倉庫同步,你能夠顯示的向遠程倉庫推送你的分支。例如你在本地建立了一個dev分支,你想其餘的人和你同樣在dev之下進行工做,可使用 git push <remote> <branch> 將本身的分支推送到遠程倉庫。git
git push origin dev 便可。服務器
下一次其餘的人從服務器上抓取數據的時候,他們會在本地生成一個遠程分支origin/serverfix,指向服務器的serverfix分支的引用。fetch
若是你在推送分支的時候,想給分支另取一個名字,可使用 git push <remote> <branch>:<remote-branch> this
例如 git push <origin> <dev>:<dev-gq> ,將本地的dev分支推送到遠程,而且遠程分支命名爲dev-gq。spa
注意: 當從遠程倉庫抓取到新的遠程跟蹤分支時,本地不會自動生成一份可編輯的副本。換句話說,也就是本地不會自動生成一個新的dev分支,只有一個不能夠進行修改的origin/dev分支。code
你能夠運行 git merge <origin/dev> 將這些跟蹤合併到你正在工做的分支上。固然你也能夠在遠程跟蹤分支上新建一個dev分支,git checkout -b dev origin/dev 這句命令會給你再本地新建一個dev分支,而且起點位於origin/dev。server
從遠程跟蹤分支檢出一個本地分支,會自動建立一個跟蹤分支(有時候也叫作上游分支)。若是在一個跟蹤分支上運行git pull,Git可以知道從哪裏去拉取數據。blog
當克隆一個倉庫的時候,通常會自動建立一個跟蹤origin/master的跟蹤分支master。rem
git checkout -b <branch> <remote>/<branch> //建立一個跟蹤分支
例子:git checkout -b dev origin/dev
相比於上述命令,Git提供了一個快捷方式來建立跟蹤分支: git checkout --track <remote>/<branch> 同步
例子:git checkout --track origin/dev 在本地建立一個dev跟蹤分支,它起始於origin/dev分支。
若是不想要使用dev這個分支做爲本地分支的名字,可使用 git checkout --track dev-gq origin/dev 將本地分支的名字命名爲dev-gq。
設置一個已有的跟蹤分支跟蹤剛剛拉取下來的遠程分支,或者要修改正在跟蹤的上游分支,可使用git branch帶上-u或者--set-upstream-to參數來進行設置。
例子: git branch -u origin/dev 設置本地跟蹤分支dev,跟蹤遠程跟蹤分支origin/dev。
git branch -vv 會將全部的本地分支列出來,能夠看到各個分支正在跟蹤哪一個遠程分支,本地分支相對於遠程分支來講,領先或者落後了多少。
$ git branch -vv iss53 7e424c3 [origin/iss53: ahead 2] forgot the brackets master 1ae2a45 [origin/master] deploying index fix * serverfix f8674d9 [teamone/server-fix-good: ahead 3, behind 1] this should do it testing 5ea463a trying something new
注意:這條命令進行對比的遠程分支是來自於你最後一次從服務器上抓取的數據,並非最新的數據,這時候,你能夠運行
git fetch --all
git branch -vv
來獲得最新的數據。
當使用 git fetch 從遠程倉庫抓取數據的時候,它並不會修改工做目錄中的內容,它只會獲取數據,而後須要你本身進行合併。然而,還有一個 git pull 命令,它會查找當前分支所跟蹤的服務器與分支,從服務器上抓取數據,而後嘗試合併進入當前分支。
git pull = git fetch + git merge
假設你已經經過遠程分支完成了全部的工做,也就是所遠程分支上的代碼已經合併到了master中,而且這個遠程分支決定之後再也不使用,可使用帶有--delete的git push命令來刪除遠程分支。
git push origin --delete dev //刪除遠程分支dev