99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于git的遠(yuǎn)程分支的詳細(xì)介紹

454398 ? 來源:itpub技術(shù)棧 ? 作者:chengycz ? 2020-10-11 10:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

不知道大家有沒有經(jīng)歷過,當(dāng)我們切換到了一個新的分支想要提交代碼的時候,總會遇到這樣的錯誤。

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

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

那么這是什么原因呢?這個origin分支又是什么意思呢?我們今天就來討論一下這個問題。

遠(yuǎn)程分支

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

當(dāng)我們在使用git clone的時候,git會自動地將這個遠(yuǎn)程的repo命名為origin,拉取它所有的數(shù)據(jù)之后,創(chuàng)建一個指向它master的指針,命名為origin/master,之后會在本地創(chuàng)建一個指向同樣位置的指針,命名為master,和遠(yuǎn)程的master作為區(qū)分。

也就是說,origin的含義指的是遠(yuǎn)程的倉庫。它只是一個標(biāo)記,就和默認(rèn)分支叫做master一樣,本身并沒有特別的含義。如果我們愿意也可以起其他的名字,但是一般沒有人這么干。比如我們在clone的時候可以添加一個參數(shù)-o給遠(yuǎn)程的repo起一個別名:

git clone -o chengzhi

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

操作命令

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

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

代碼拉取

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

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

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

代碼推送

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

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

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

git push origin test:cz/test

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

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

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

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70772
  • Git
    Git
    +關(guān)注

    關(guān)注

    0

    文章

    205

    瀏覽量

    16225
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    主流版本控制工具Git vs Perforce P4:架構(gòu)模式、性能、大文件管理及分支管理對比詳解

    Git vs Perforce P4,如何選型?架構(gòu)模式、性能、大文件管理、分支策略四大維度對比,幫你全面了解兩者的核心差異,選擇更合適你團(tuán)隊(duì)需求的版本控制系統(tǒng)。
    的頭像 發(fā)表于 06-13 14:52 ?207次閱讀
    主流版本控制工具<b class='flag-5'>Git</b> vs Perforce P4:架構(gòu)模式、性能、大文件管理及<b class='flag-5'>分支</b>管理對比詳解

    設(shè)備遠(yuǎn)程維護(hù)如何實(shí)現(xiàn)?遠(yuǎn)程維護(hù)平臺的功能特點(diǎn)

    隨著工業(yè)智能化和數(shù)字化轉(zhuǎn)型的快速推進(jìn),設(shè)備遠(yuǎn)程維護(hù)已成為企業(yè)提升運(yùn)營效率、降低維護(hù)成本的重要手段。通過遠(yuǎn)程維護(hù)平臺,企業(yè)能夠?qū)崟r監(jiān)控設(shè)備狀態(tài),快速響應(yīng)故障,實(shí)現(xiàn)設(shè)備的高效管理和維護(hù)。本文將詳細(xì)探討
    的頭像 發(fā)表于 02-21 15:50 ?434次閱讀
    設(shè)備<b class='flag-5'>遠(yuǎn)程</b>維護(hù)如何實(shí)現(xiàn)?<b class='flag-5'>遠(yuǎn)程</b>維護(hù)平臺的功能特點(diǎn)

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-移植前準(zhǔn)備之git管理內(nèi)核源碼

    我們前邊已經(jīng)介紹Git工具,是一個非常實(shí)用的代碼管理工具。如果驗(yàn)證編譯出的內(nèi)核能夠正常啟動,就可以將源碼用git工具管理起來??梢郧宄牧私庠创a改動記錄。如果不小心把源碼改亂了還可以進(jìn)行版本
    發(fā)表于 01-23 10:51

    飛凌嵌入式ElfBoard ELF 1板卡-移植前準(zhǔn)備之git管理內(nèi)核源碼

    我們前邊已經(jīng)介紹Git工具,是一個非常實(shí)用的代碼管理工具。如果驗(yàn)證編譯出的內(nèi)核能夠正常啟動,就可以將源碼用git工具管理起來??梢郧宄牧私庠创a改動記錄。如果不小心把源碼改亂了還可以進(jìn)行版本
    發(fā)表于 01-22 10:39

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-本地倉庫管理之分支間的操作

    當(dāng)工作區(qū)的文件可能在某一階段用于兩個項(xiàng)目,之后做不同修改時,就可以在該階段切出新的分支,分別進(jìn)行管理。當(dāng)前分支以剛搭建好的git倉庫為例,剛搭建完的倉庫只有master分支,使用
    發(fā)表于 01-21 14:32

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-本地倉庫管理之當(dāng)前分支內(nèi)的操作

    以剛搭建好的git倉庫為例,剛搭建完的倉庫只有master分支,使用git branch查看當(dāng)前的分支情況。elf@ubuntu:~/work/example/hello$
    發(fā)表于 01-20 09:50

    飛凌嵌入式ElfBoard ELF 1板卡-本地倉庫管理之分支間的操作

    當(dāng)工作區(qū)的文件可能在某一階段用于兩個項(xiàng)目,之后做不同修改時,就可以在該階段切出新的分支,分別進(jìn)行管理。當(dāng)前分支以剛搭建好的git倉庫為例,剛搭建完的倉庫只有master分支,使用
    發(fā)表于 01-20 09:38

    誰能詳細(xì)介紹一下track-and-hold

    在運(yùn)放和ADC芯片的數(shù)據(jù)手冊中經(jīng)常看到track-and-hold,誰能詳細(xì)介紹一下track-and-hold?
    發(fā)表于 01-20 09:10

    飛凌嵌入式ElfBoard ELF 1板卡-本地倉庫管理之當(dāng)前分支內(nèi)的操作

    以剛搭建好的git倉庫為例,剛搭建完的倉庫只有master分支,使用git branch查看當(dāng)前的分支情況。 elf@ubuntu:~/work/example/hello$
    發(fā)表于 01-18 10:25

    飛凌嵌入式ElfBoard ELF 1板卡-git管理源碼之git安裝和使用

    分兩種方式,一種是管理當(dāng)前的代碼,給當(dāng)前代碼創(chuàng)建一個git倉庫,這種需要初始化新倉庫;還有一種是用clone克隆一個遠(yuǎn)程倉庫到自己當(dāng)前目錄下,這種適合一群人維護(hù)一個倉庫,也是常見的方式。本文只介紹
    發(fā)表于 01-14 09:08

    云服務(wù)器 Flexus X 實(shí)例:部署 Gitea,擁有自己的 Git 倉庫,管理本地代碼

    、零售、金融、游戲等眾多領(lǐng)域的通用工作負(fù)載需求。本文旨在詳細(xì)闡述如何高效利用“云服務(wù)器 Flexus X 實(shí)例”,包括如何在其中從零開始,通過安裝相關(guān)依賴、安裝 Docker、安裝 Gitea 等步驟,實(shí)現(xiàn)自己的 Git 倉庫,管理本地代碼。精彩內(nèi)容,不容錯過,快來一探究
    的頭像 發(fā)表于 01-07 16:59 ?416次閱讀
    云服務(wù)器 Flexus X 實(shí)例:部署 Gitea,擁有自己的 <b class='flag-5'>Git</b> 倉庫,管理本地代碼

    遠(yuǎn)程操作電腦的方法有哪些?

    隨著遠(yuǎn)程辦公、遠(yuǎn)程技術(shù)支持和跨地域協(xié)作的需求不斷增加,遠(yuǎn)程操作電腦的方法也越來越多樣化。無論是個人用戶還是企業(yè),選擇合適的遠(yuǎn)程控制方法,可以大大提高工作效率。本文將
    的頭像 發(fā)表于 09-12 08:11 ?1374次閱讀
    <b class='flag-5'>遠(yuǎn)程</b>操作電腦的方法有哪些?

    《DNK210使用指南 -CanMV版 V1.0》第五章 編譯CanMV固件

    的使用介紹不是本教程文檔的重點(diǎn),請讀者在使用中遇到問題時,善用搜索引擎。 5.3 編譯CanMV源碼關(guān)于CanMV源碼的編譯,建議讀者先詳細(xì)閱讀CanMV倉庫下的build.md文檔。編譯CanMV源碼前
    發(fā)表于 09-07 10:56

    Mac 上好用的遠(yuǎn)程桌面軟件推薦

    專業(yè)遠(yuǎn)程桌面軟件,如Splashtop。本篇文章將詳細(xì)介紹這兩種方案,并分析各自的優(yōu)缺點(diǎn),幫助你選擇最適合的遠(yuǎn)程控制工具。方案一:使用操作系統(tǒng)自帶的
    的頭像 發(fā)表于 08-30 13:20 ?1076次閱讀
    Mac 上好用的<b class='flag-5'>遠(yuǎn)程</b>桌面軟件推薦

    windows11 遠(yuǎn)程連接工具

    隨著遠(yuǎn)程辦公的普及,選擇合適的遠(yuǎn)程桌面工具變得尤為重要。在Windows11上,用戶可以利用系統(tǒng)自帶的遠(yuǎn)程桌面功能,或選擇更專業(yè)的第三方解決方案,如Splashtop。本文將詳細(xì)
    的頭像 發(fā)表于 08-06 08:37 ?824次閱讀
    windows11 <b class='flag-5'>遠(yuǎn)程</b>連接工具