首頁技術(shù)文章正文

Python培訓(xùn)之Git遠(yuǎn)程操作介紹(二)

更新時間:2017-04-16 來源:黑馬程序員Python培訓(xùn)學(xué)院 瀏覽量:

四、git pull
git pull命令的作用是,取回遠(yuǎn)程主機某個分支的更新,再與本地的指定分支合并。它的完整格式稍稍有點復(fù)雜。
 
$ git pull <遠(yuǎn)程主機名> <遠(yuǎn)程分支名>:<本地分支名>
比如,取回origin主機的next分支,與本地的master分支合并,需要寫成下面這樣。
 
$ git pull origin next:master
如果遠(yuǎn)程分支是與當(dāng)前分支合并,則冒號后面的部分可以省略。
 
$ git pull origin next
上面命令表示,取回origin/next分支,再與當(dāng)前分支合并。實質(zhì)上,這等同于先做git fetch,再做git merge。
 
$ git fetch origin
$ git merge origin/next
在某些場合,Git會自動在本地分支與遠(yuǎn)程分支之間,建立一種追蹤關(guān)系(tracking)。比如,在git clone的時候,所有本地分支默認(rèn)與遠(yuǎn)程主機的同名分支,建立追蹤關(guān)系,也就是說,本地的master分支自動"追蹤"origin/master分支。
Git也允許手動建立追蹤關(guān)系。
 
五、git push
git push命令用于將本地分支的更新,推送到遠(yuǎn)程主機。它的格式與git pull命令相仿。
 
$ git push <遠(yuǎn)程主機名> <本地分支名>:<遠(yuǎn)程分支名>
注意,分支推送順序的寫法是<來源地>:<目的地>,所以git pull是<遠(yuǎn)程分支>:<本地分支>,而git push是<本地分支>:<遠(yuǎn)程分支>。
如果省略遠(yuǎn)程分支名,則表示將本地分支推送與之存在"追蹤關(guān)系"的遠(yuǎn)程分支(通常兩者同名),如果該遠(yuǎn)程分支不存在,則會被新建。
 
$ git push origin master
上面命令表示,將本地的master分支推送到origin主機的master分支。如果后者不存在,則會被新建。
如果省略本地分支名,則表示刪除指定的遠(yuǎn)程分支,因為這等同于推送一個空的本地分支到遠(yuǎn)程分支。
 
$ git push origin :master
# 等同于
$ git push origin --delete master
上面命令表示刪除origin主機的master分支。
如果當(dāng)前分支與遠(yuǎn)程分支之間存在追蹤關(guān)系,則本地分支和遠(yuǎn)程分支都可以省略。
 
$ git push origin
上面命令表示,將當(dāng)前分支推送到origin主機的對應(yīng)分支。
如果當(dāng)前分支只有一個追蹤分支,那么主機名都可以省略。
 
$ git push
如果當(dāng)前分支與多個主機存在追蹤關(guān)系,則可以使用-u選項指定一個默認(rèn)主機,這樣后面就可以不加任何參數(shù)使用git push。
 
$ git push -u origin master
上面命令將本地的master分支推送到origin主機,同時指定origin為默認(rèn)主機,后面就可以不加任何參數(shù)使用git push了。
不帶任何參數(shù)的git push,默認(rèn)只推送當(dāng)前分支,這叫做simple方式。此外,還有一種matching方式,會推送所有有對應(yīng)的遠(yuǎn)程分支的本地分支。Git 2.0版本之前,默認(rèn)采用matching方法,現(xiàn)在改為默認(rèn)采用simple方式。如果要修改這個設(shè)置,可以采用git config命令。
 
$ git config --global push.default matching
# 或者
$ git config --global push.default simple
還有一種情況,就是不管是否存在對應(yīng)的遠(yuǎn)程分支,將本地的所有分支都推送到遠(yuǎn)程主機,這時需要使用--all選項。
 
$ git push --all origin
上面命令表示,將所有本地分支都推送到origin主機。
如果遠(yuǎn)程主機的版本比本地版本更新,推送時Git會報錯,要求先在本地做git pull合并差異,然后再推送到遠(yuǎn)程主機。這時,如果你一定要推送,可以使用--force選項。
 
$ git push --force origin
上面命令使用--force選項,結(jié)果導(dǎo)致遠(yuǎn)程主機上更新的版本被覆蓋。除非你很確定要這樣做,否則應(yīng)該盡量避免使用--force選項。
最后,git push不會推送標(biāo)簽(tag),除非使用--tags選項。
 
$ git push origin --tags



本文版權(quán)歸黑馬程序員Python培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!

作者:黑馬程序員Python培訓(xùn)學(xué)院

首發(fā):http://m.3rdspacecomics.com/news/python.html

分享到:
在線咨詢 我要報名
和我們在線交談!