主頁 > 企業開發 > 當我們“獲取上游”分叉存盤庫時會發生什么?

當我們“獲取上游”分叉存盤庫時會發生什么?

2021-12-03 22:40:47 企業開發

我正在學習 GitHub 并找到了用于分叉存盤庫的下游/上游概念。我還瀏覽了各種檔案/博客,但無法弄清楚當我們按下“上游獲取”時實際發生了什么?

uj5u.com熱心網友回復:

git fetch upstream從遠程存盤庫中獲取(“下載”)所有更改upstream并將它們存盤在本地upstream然后,您可以使用此前綴參考這些本地副本(例如,檢查它們、設定跟蹤分支、挑選提交等)。例如,git checkout upstream/some-branch會檢查some-branch您剛剛從upstream.

uj5u.com熱心網友回復:

要正確理解這一點,您需要了解以下有關 Git 的知識:

  • Git 是關于提交的這與檔案無關(盡管提交包含檔案)。這與分支無關(盡管分支名稱可以幫助我們,而 Git 可以找到提交)。這真的是關于commits
  • 提交被編號。數字是巨大的、丑陋的、隨機的,以十六進制表示每個提交都有一個唯一的編號,與每個 Git 存盤庫中的每個其他提交都不同。如果兩個不同的 Git 存盤庫中具有相同的提交編號,則它們中具有相同的提交:從某種意義上說,編號就是提交(盡管您必須擁有提交本身:編號只是關鍵,在關鍵-value 資料庫,Git 用來查找,即查找,提交)。
  • 除了or 分支名稱之外,Git 還有其他名稱:標記名稱,例如,以及稱為遠程跟蹤名稱的東西(Git 實際上將這些遠程跟蹤分支名稱稱為,但我發現如果省略它會更有意義這里不必要的詞分支)。每個名稱都可以存盤一 (1) 個哈希 ID。這就是我們所需要的,因為提交存盤哈希 ID。mainmasterdevfeature/tallv3.14

當我們克隆一個 Git 存盤庫時,我們會獲得其他存盤庫的所有提交,沒有任何分支1 我們的 Git 沒有分支名稱,而是采用另一個克隆的分支名稱并將它們轉換為我們的遠程跟蹤名稱如果我們呼叫另一個 Git——我們現在正在克隆的origin那個——,這是標準的第一個遠程名稱,它們main變成 our origin/main,它們的dev turns into our origin/dev`,等等。

這意味著我們的分支名稱是ours我們不必使用與其他 Git 存盤庫相同的名稱。我們通常做的,只是理智,但我們并不需要

這也間接地告訴我們什么是“遠程”:遠程是一個短名稱,它存盤一個 URL——我們從中克隆的 URL,originfor——并且還為遠程跟蹤名稱提供前綴。originorigin/dev來自遠程名字origin2

當你運行時:

git fetch origin

您的 Git 軟體,在您的存盤庫中運行,在某處呼叫其他一些 Git 軟體(位于名稱下存盤的 URL)origin,并使用該 URL 將其連接到某個其他存盤庫。其他軟體(實際上是“其他 Git”)讀出他們的提交——特別是哈希 ID——和分支名稱,并將它們發送到“我們的 Git”(我們的軟體在我們的存盤庫中作業)。我們的 Git 和他們的 Git 有一個涉及哈希 ID 的小型對話,以便我們的 Git 可以看到他們有哪些提交,而我們沒有。

然后我們的 Git 將帶來他們擁有的任何(對我們來說是新的)提交,而我們沒有。這包括我們手動、小心地從我們的 Git 存盤庫中丟棄的任何提交,因為我們發現它們在某些方面很糟糕:3所以在這方面,這就像與可能攜帶一些病毒的 Git 進行 Git-sex,我們只會繼續被重新感染,直到他們放棄那個錯誤的提交。但大多數情況下這是好的,因為大多數情況下我們確實希望他們擁有的每一次提交,我們都沒有。

但是:怎么樣upstream嗯,這個詞有一個小問題,上游,因為 Git 使用這個來表示別的東西。4 但在這種情況下,upstreamGitHub 這個名字特別鼓勵人們在他們的 Git 存盤庫中用作第二個遠程我們可以有不止一個遙控器!

使用,我們創建了第二個名為 的遙控器在那之后:git remote add upstream urlupstream

git fetch upstream

使用保存的 URL 呼叫其他一些 Git,就像git fetch origin那樣。無論托管站點是 GitHub 還是其他一些站點,我們的 Git 和他們的 Git 都像以前一樣進行著相同的對話。我們的 Git 會找出他們有哪些我們沒有的提交,將這些提交下載到我們的 Git 存盤庫中,并創建或更新遠程跟蹤名稱,如upstream/mainupstream/dev我們將為upstream/*另一個 git 中存盤在 name 下的 URL 中的每個分支名稱獲取一個名稱upstream

這就是它的全部內容。不過,有一個特別的地方讓人們在這里絆倒。假設您git clone有一個存盤庫,因此您現在擁有origin/mainorigin/feature/tall. 但是該origin存盤庫是從其他某個存盤庫分叉出來的,因此您git remote add可以添加您的fork2upstream您想呼叫的任何內容,然后運行:

git fetch fork2

或者不管你叫它什么。你現在有fork2/mainfork2/feature/tall所以你有origin/feature/tallfork2/feature/tall

你還沒有制作你自己的feature/tall 你跑:

git switch feature/tall

或者:

git checkout feature/tall

expecting your Git to create your feature/tall from ... well, wait: are you expecting your new branch name, feature/tall, to spring from origin/feature/tall and use that as its upstream setting? Or are you expecting your new branch name, feature/tall, to spring from fork2/feature/tall and use that as its upstream? Or perhaps you need two feature/tall branches, one to go with origin/feature/tall and one to go with fork2/feature/tall.

You can't call both feature/tall. This means that if you do want two branch names, one for each remote-tracking name, you will be forced to break the usual "my name = my remote-tracking name, minus the remote" setup that you're used to. The bottom line is that as soon as you have two or more remotes, your Git life gets more complicated. There's no way around this: you must understand what remotes, and remote-tracking names, are and do.


1您可以隨時修改此行為git clone,并且存盤庫中通常會有垃圾和/或丟棄的提交,這些提交稍后git clone被維護命令清理并且通常不會復制這些。所以這只是一個近似值,有助于理解事物。

2像往常一樣在GIT中,通過該處理git fetch origin在它們的結果dev變得origin/dev完全沒有直接的。你可以用它做各種瘋狂的事情。不過,為了理智,在任何普通用戶克隆中做任何奇怪和瘋狂的事情都是不明智的:讓他們dev成為你的origin/dev.

3例如,也許我們小心地丟棄了一個意外提交,該提交添加了一個阻塞磁盤的 TB 級資料庫。哎呀,又來了!

4特別是,Git 允許每個分支名稱存盤單個上游名稱通常我們將分支的上游設定br1origin/br1origin對應于其分支名稱的遠程跟蹤名稱br1這樣我們的分支名稱br1就可以很容易地參考我們的origin/br1,這是我們的副本——我們 Git 的記憶——他們的分支名稱br1

這是不是在所有同一個遠程命名upstream如果 GitHub 鼓勵人們使用第二個遠程名稱fork2或類似名稱,那可能會有所幫助。

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/372652.html

標籤:混帐 github 版本控制 存储库 git叉

上一篇:Git:如何洗掉除master和develop之外的所有本地分支(已合并或未合并)

下一篇:Eclipse:取消選中“使用默認位置”

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • 使用Django Rest framework搭建Blog

    在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

    uj5u.com 2023-04-20 08:17:54 more
  • 記錄-new Date() 我忍你很久了!

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

    uj5u.com 2023-04-20 08:17:47 more
  • 使用Vue.js實作文字跑馬燈效果

    實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

    uj5u.com 2023-04-20 08:12:31 more
  • JavaScript 運算子

    JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

    uj5u.com 2023-04-20 08:02:25 more
  • CSS—相對單位rem

    一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

    uj5u.com 2023-04-20 08:02:21 more
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 08:01:50 more
  • 如何在 vue3 中使用 jsx/tsx?

    我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

    uj5u.com 2023-04-20 08:01:37 more
  • 【Vue2.x原始碼系列06】計算屬性computed原理

    本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

    uj5u.com 2023-04-20 08:01:31 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:01:10 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:00:32 more