git遠(yuǎn)程操作: git push, git fetch, git pull

??工作中使用git來(lái)管理項(xiàng)目的小伙伴是不是會(huì)頻繁地使用git的遠(yuǎn)程操作,下面是我對(duì)git在本地倉(cāng)庫(kù)與遠(yuǎn)程倉(cāng)庫(kù)之間進(jìn)行交互的三個(gè)常用命令:git push,git fetch,git pull 進(jìn)行了整理和總結(jié),希望對(duì)大家有所幫助。

歡迎大家前來(lái)交流討論,不足之處,請(qǐng)指出,謝謝!

git push

1. 推送本地分支到遠(yuǎn)程分支
git push <遠(yuǎn)程主機(jī)名> <本地分支名>:<遠(yuǎn)程分支名>
2. 如果省略遠(yuǎn)程分支名,則表示將本地分支推送至與之存在“追蹤關(guān)系”的遠(yuǎn)程分支(通常兩者同名),如果該遠(yuǎn)程分支不存在,則會(huì)被新建:
git push origin master

上述命令表示:將本地master分支推送到origin主機(jī)的master分支。如果后者不存在,則會(huì)被新建。

3. 如果省略本地分支名,則表示刪除指定的遠(yuǎn)程分支,因?yàn)檫@等同于推送一個(gè)空的本地分支到遠(yuǎn)程分支。
git push origin :master

等價(jià)于:

git push origin --delete master (刪除遠(yuǎn)程分支)
4. 如果當(dāng)前分支與遠(yuǎn)程分支之間存在追蹤關(guān)系,則本地分支和遠(yuǎn)程分支都可以省略。
git push origin
5. 如果當(dāng)前分支只有一個(gè)追蹤分支,那么主機(jī)名都可以省略:
git push


git fetch

1. 將遠(yuǎn)程主機(jī)所有更新全部取回到本地
git fetch <遠(yuǎn)程主機(jī)名>
2. 將遠(yuǎn)程主機(jī)特定分支更新取回到本地
git fetch <遠(yuǎn)程主機(jī)名> <遠(yuǎn)程分支名>

注:所取回的更新,在本地主機(jī)上要用“遠(yuǎn)程主機(jī)名/分支名”的形式讀取。如origin主機(jī)的master,就要用origin/master讀取。

(1) 可以在此origin/master的基礎(chǔ)上創(chuàng)建新的分支:
git checkout -b newBranch origin/master
(2) 也可以將此origin/master分支合并到本地分支:
git merge origin/master


git pull

1. 取回遠(yuǎn)程主機(jī)某個(gè)分支的更新,再與本地指定分支合并
git pull <遠(yuǎn)程主機(jī)名> <遠(yuǎn)程分支名>:<本地分支名>

eg:取回origin主機(jī)的next分支與本地master分支合并:

git pull origin next:master
2. 如果遠(yuǎn)程分支是與當(dāng)前分支合并,則冒號(hào)后面的部分可以省略:
git pull origin next

等價(jià)于:

git fetch origin next

git merge origin/next

注:

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

Git也允許手動(dòng)建立追蹤關(guān)系:

eg:指定本地分支master追蹤遠(yuǎn)程origin/next分支:

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

注:查看分支追蹤關(guān)系:

git branch -vv
3. 如果當(dāng)前分支與遠(yuǎn)程分支存在追蹤關(guān)系,git pull就可以省略遠(yuǎn)程分機(jī)名
git pull origin

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

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

注:

??如果遠(yuǎn)程主機(jī)刪除了某個(gè)分支,默認(rèn)情況下,git pull不會(huì)在拉取遠(yuǎn)程分支的時(shí)候刪除對(duì)應(yīng)的本地分支。這是為了防止,由于其他人操作了遠(yuǎn)程主機(jī),導(dǎo)致git pull不知不覺(jué)刪除了本地分支。

但可以通過(guò)加參數(shù) -p 就會(huì)在本地刪除遠(yuǎn)程已經(jīng)刪除的分支:

git pull -p


參考文獻(xiàn):

Git遠(yuǎn)程操作詳解

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容