欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

git的遠(yuǎn)程分支的作用和本地分支有什么區(qū)別

 更新時(shí)間:2020年10月29日 14:18:50   作者:TechFlow2019  
這篇文章主要介紹了git的遠(yuǎn)程分支的作用和本地的有什么區(qū)別,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

不知道大家有沒(méi)有經(jīng)歷過(guò),當(dāng)我們切換到了一個(gè)新的分支想要提交代碼的時(shí)候,總會(huì)遇到這樣的錯(cuò)誤。

我們把日志里的英文翻譯過(guò)來(lái)是說(shuō),我們當(dāng)前的分支沒(méi)有設(shè)置任何上游分支。然后git提示我們可以運(yùn)行下面這行代碼來(lái)設(shè)置遠(yuǎn)程的上游,這樣我們就可以push成功了。

當(dāng)然如果我們push的時(shí)候執(zhí)行的不是git push,而是后面再加上origin的話,就可以push成功了。比如這樣:

那么這是什么原因呢?這個(gè)origin分支又是什么意思呢?我們今天就來(lái)討論一下這個(gè)問(wèn)題。

遠(yuǎn)程分支

遠(yuǎn)程分支其實(shí)就是遠(yuǎn)程代碼倉(cāng)庫(kù)當(dāng)中的分支,比如我們的repo如果是存在github的,那么這個(gè)遠(yuǎn)程倉(cāng)庫(kù)就是github,如果是存在gitlab的,那么這個(gè)倉(cāng)庫(kù)就是gitlab,如果是其他的倉(cāng)庫(kù)也是一樣的道理。

當(dāng)我們?cè)谑褂胓it clone的時(shí)候,git會(huì)自動(dòng)地

將這個(gè)遠(yuǎn)程的repo命名為origin,拉取它所有的數(shù)據(jù)之后,創(chuàng)建一個(gè)指向它master的指針,命名為origin/master,之后會(huì)在本地創(chuàng)建一個(gè)指向同樣位置的指針,命名為master,和遠(yuǎn)程的master作為區(qū)分。

也就是說(shuō),origin的含義指的是遠(yuǎn)程的倉(cāng)庫(kù)。它只是一個(gè)標(biāo)記,就和默認(rèn)分支叫做master一樣,本身并沒(méi)有特別的含義。如果我們?cè)敢庖部梢云鹌渌拿?,但是一般沒(méi)有人這么干。比如我們?cè)赾lone的時(shí)候可以添加一個(gè)參數(shù)-o給遠(yuǎn)程的repo起一個(gè)別名:

這樣一來(lái),遠(yuǎn)程的這個(gè)repo就會(huì)被命名為chengzhi,代替原本的origin。但是這樣除了裝逼和增加成本之外,沒(méi)有任何用處,不推薦這么干。

操作命令

還記得我們之前在介紹git的時(shí)候曾經(jīng)說(shuō)過(guò)遠(yuǎn)程repo的作用,就是為了防止本地的代碼錯(cuò)亂,所以在遠(yuǎn)程留一份備份。這樣即使我們的代碼完蛋了,至少還可以找到備份。

所以遠(yuǎn)程的repo最大的作用就是保留備份,既然要保留備份,那么我們本地和遠(yuǎn)程的代碼交互肯定是免不了的。大家可能都大概知道git pull從遠(yuǎn)程拉取,git push推送到遠(yuǎn)程,但是對(duì)于這其中的細(xì)節(jié)可能不太清楚。之前沒(méi)有詳細(xì)介紹過(guò)遠(yuǎn)程分支,所以也沒(méi)辦法深入,我們今天剛好聊到這個(gè)話題,正好好好說(shuō)道說(shuō)道。

代碼拉取

我們先說(shuō)代碼拉取,說(shuō)到代碼拉取大家的第一反應(yīng)可能是git pull。但是其實(shí)git pull并不是嚴(yán)格意義上的代碼拉取命令,至少它還不是最細(xì)粒度,其實(shí)還有一個(gè)比git pull更加細(xì)粒度的操作。它就是——git fetch。

git clone -o chengzhi

實(shí)際上git fetch才是真正的代碼拉取的操作,它的作用是將遠(yuǎn)程的改動(dòng)同步到本地。當(dāng)我們執(zhí)行g(shù)it fetch origin的時(shí)候,這里的origin指的是遠(yuǎn)程的名字,如果你有多個(gè)遠(yuǎn)程的話要指定的話需要加上,否則可以不寫。它會(huì)把遠(yuǎn)程所有的改動(dòng)和分支都拉取到本地,命名為origin/xxx。origin的分支我們用git branch是看不到的,它只能看到本地的分支名,如果想要查看可以使用git branch -r。

當(dāng)我們使用git checkout切換過(guò)去的時(shí)候,可以不必加上origin,git會(huì)自動(dòng)生成一個(gè)本地的分支指針,也指向同樣的節(jié)點(diǎn)。它相當(dāng)于我們執(zhí)行了git checkout -b test origin/test。說(shuō)到這里就需要提一下git pull和git fetch的區(qū)別了,這兩者從表面上來(lái)看都是拉取遠(yuǎn)程的改動(dòng)。但是兩者針對(duì)的范圍不同,git fetch針對(duì)遠(yuǎn)程的所有改動(dòng),而git pull只針對(duì)當(dāng)前分支對(duì)應(yīng)的遠(yuǎn)程分支。另外git pull執(zhí)行之后會(huì)將遠(yuǎn)程的改動(dòng)merge到本地的分支,也就是說(shuō)它其實(shí)多了一步merge的操作。

代碼推送

說(shuō)到代碼推送回到了我們開頭的那個(gè)問(wèn)題,什么情況下git push就可以,什么情況下需要加上origin呢?

這里涉及一個(gè)機(jī)制就是本地的分支是不會(huì)自動(dòng)和遠(yuǎn)程同步的,比如遠(yuǎn)程有人創(chuàng)建了一個(gè)test分支,我們拉取到本地會(huì)叫做origin/test。我們也可以自己創(chuàng)建一個(gè)test分支,和它井水不犯河水。這也是為了方便,如果直接用名稱映射的話,可能會(huì)有潛在的沖突。并且由于可能會(huì)存在多個(gè)遠(yuǎn)程repo,所以我們push的時(shí)候也會(huì)有多種選擇。

最完整的push命令是應(yīng)該寫成這樣的:

git push origin test:cz/test

我們注意到這里用了一個(gè)奇怪的寫法test:cz/test,它的意思是說(shuō)將本地的test分支推送到遠(yuǎn)程作為cz/test分支。如果我們想要本地的名稱和遠(yuǎn)程一樣,我們可以省略簡(jiǎn)寫成:git push origin test。

如果我們?cè)O(shè)置過(guò)當(dāng)前test分支的上游是遠(yuǎn)程的test,或者本地的test就是從origin拷貝過(guò)來(lái)的,那么我們可以直接git push,它會(huì)自動(dòng)將本地的分支與遠(yuǎn)程關(guān)聯(lián)上,會(huì)方便很多。實(shí)際上我們大多數(shù)的push操作都是這么進(jìn)行的。將本地分支和遠(yuǎn)程建立映射可以使用這個(gè)命令:

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

它表示的是將本地的master和遠(yuǎn)程的master進(jìn)行關(guān)聯(lián),設(shè)置過(guò)關(guān)聯(lián)之后我們只需要git push和git pull就可以更新和推送這個(gè)分支了,會(huì)方便很多。

關(guān)于遠(yuǎn)程分支還有一些內(nèi)容我們沒(méi)有涉及,比如如何跟蹤遠(yuǎn)程的分支,如何刪除等等。由于這些內(nèi)容幾乎用不到,我們即使強(qiáng)行記住了到時(shí)候也會(huì)忘記,所以就不多贅述了。

到此這篇關(guān)于git的遠(yuǎn)程分支的作用和本地的有什么區(qū)別的文章就介紹到這了,更多相關(guān)git遠(yuǎn)程分支內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vscode如何安裝漢化和Python智能感知

    vscode如何安裝漢化和Python智能感知

    VSCode(VisualStudioCode)是由微軟研發(fā)的一款免費(fèi)、開源的跨平臺(tái)文本(代碼)編輯器,算是目前前端開發(fā)幾乎完美的軟件開發(fā)工具。今天我們來(lái)看看它如何使用呢
    2020-01-01
  • git?push指令常見選項(xiàng)和用法詳解

    git?push指令常見選項(xiàng)和用法詳解

    Git中的git?push命令用于將本地倉(cāng)庫(kù)的改動(dòng)推送到遠(yuǎn)程倉(cāng)庫(kù),是協(xié)同開發(fā)中的重要工具,在團(tuán)隊(duì)合作中,使用git?push和git?pull可以有效維護(hù)項(xiàng)目同步,避免沖突,推送時(shí)若遇到?jīng)_突需先解決后再進(jìn)行推送,需要的朋友可以參考下
    2024-09-09
  • 基于語(yǔ)雀編輯器的在線文檔編輯與查看功能

    基于語(yǔ)雀編輯器的在線文檔編輯與查看功能

    語(yǔ)雀是一個(gè)非常優(yōu)秀的文檔和知識(shí)庫(kù)工具,其編輯器更是非常好用,雖無(wú)開源版本,但有編譯好的可以使用,本文基于語(yǔ)雀編輯器實(shí)現(xiàn)在線文檔的編輯與文章的預(yù)覽,感興趣的朋友一起看看吧
    2024-07-07
  • ElasticSearch寫入流程實(shí)例解析

    ElasticSearch寫入流程實(shí)例解析

    這篇文章主要為大家介紹了ElasticSearch寫入流程實(shí)例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 詳細(xì)HTTP協(xié)議的前世今生

    詳細(xì)HTTP協(xié)議的前世今生

    超文本傳輸協(xié)議(Hypertext Transfer Protocol,HTTP)是一個(gè)簡(jiǎn)單的請(qǐng)求-響應(yīng)協(xié)議,它通常運(yùn)行在TCP之上。它指定了客戶端可能發(fā)送給服務(wù)器什么樣的消息以及得到什么樣的響應(yīng)。請(qǐng)求和響應(yīng)消息的頭以ASCII形式給出;而消息內(nèi)容則具有一個(gè)類似MIME的格式
    2021-06-06
  • 如何使用VSCode 運(yùn)行調(diào)試插件代碼

    如何使用VSCode 運(yùn)行調(diào)試插件代碼

    這篇文章主要介紹了如何使用VSCode 運(yùn)行調(diào)試插件代碼的相關(guān)資料,需要的朋友可以參考下
    2020-01-01
  • git恢復(fù)刪除的分支及內(nèi)容的方法

    git恢復(fù)刪除的分支及內(nèi)容的方法

    下面小編就為大家?guī)?lái)一篇git恢復(fù)刪除的分支及內(nèi)容的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • VSCode讓終端默認(rèn)在當(dāng)前文件的路徑啟動(dòng)(方法推薦)

    VSCode讓終端默認(rèn)在當(dāng)前文件的路徑啟動(dòng)(方法推薦)

    這篇文章主要介紹了VSCode中如何讓終端默認(rèn)在當(dāng)前文件的路徑啟動(dòng),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Web通信 分析工具 [推薦]

    Web通信 分析工具 [推薦]

    在抓蝦上看到一篇Web開發(fā)分析工具的文章(鏈接就免了),怎么遠(yuǎn)沒(méi)有我用的東西好用呢? 還是介紹介紹我用的吧。由于平常開發(fā)只用FireFox,完成后再去調(diào)試IE, 所以這些工具絕大部分是針對(duì)FireFox的。
    2009-04-04
  • Git命令常用操作之代碼拉取和提交方式

    Git命令常用操作之代碼拉取和提交方式

    這篇文章主要介紹了Git命令常用操作之代碼拉取和提交方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評(píng)論