Git叉子實際上是Git轉殖嗎?

2021-10-01 20:14:07 字數 3121 閱讀 2004

我一直聽到有人說他們在git中提供**。 git「fork」聽起來像git「轉殖」,還有一些(毫無意義的)放棄未來合併的心理意願。 git中沒有fork命令,對吧?

github通過將對應關係固定到它上來使叉子變得更加真實。 也就是說,您按下前叉按鈕後,當您按下拉取請求按鈕時,系統足夠智慧型,可以通過電子郵件傳送給所有者。 因此,它是圍繞儲存庫所有權和許可權的一點點舞蹈。

是/否? 對github的任何焦慮都會向這個方向擴充套件git? 或者git吸收功能的任何謠言?

我認為fork是其他儲存庫的副本,但隨著您的帳戶修改。 例如,如果您在本地直接轉殖其他儲存庫,則遠端物件源仍在使用您從中轉殖的帳戶。 您無法提交和貢獻您的**。 它只是乙個純粹的**副本。 否則,如果您分叉儲存庫,它將使用您的github帳戶中的帳戶設定更新來轉殖儲存庫。 然後在您的帳戶上下文中轉殖回購,您可以提交您的**。

當您決定為某個專案做出貢獻時,就會完成分叉。 您可以複製整個專案及其歷史記錄日誌。 此副本完全在您的儲存庫中完成,一旦您進行了這些更改,您就會發出拉取請求。 現在它可以接受您的拉取請求並將更改合併到原始**中。

git clone是乙個實際的命令,允許使用者獲取源的副本。 git clone [url]這應該在您自己的本地儲存庫中建立[url]的副本。

除了轉殖是從伺服器到你的機器並且分叉在伺服器本身上覆制這一事實之外,乙個重要的區別是當我們轉殖時,我們實際上得到了所有的分支,標籤等。

但是當我們fork時,我們實際上只獲取master分支中的當前檔案,除此之外。 這意味著我們沒有得到其他分支機構等。

因此,如果您必須將某些內容合併回原始儲存庫,那麼它是乙個儲存庫間合併,肯定需要更高的許可權。

fork不是git中的命令; 它只是github實現的乙個概念。 記住git被設計為在點對點環境中工作,而不需要與任何主副本同步。 伺服器只是另乙個對等體,但我們將其視為主副本。

關於什麼是「叉子」,這裡存在誤解。 事實上,fork只不過是一組每使用者分支。 當您推送到fork時,您實際上會推送到原始儲存庫,因為這是唯一的儲存庫。

您可以通過推送到fork,注意提交然後轉到原始儲存庫並使用提交id來嘗試此操作,您將看到提交「在」原始儲存庫中。

這很有意義,但它遠非顯而易見(我最近偶然發現了這一點)。

當john分析儲存庫superproject時,實際發生的事情是源儲存庫中的所有分支都使用「john.master」,「john.new_gui_project」等名稱進行複製。

github「隱藏」了「約翰」。 從我們這裡得到的幻覺我們在github上有我們自己的「副本」儲存庫,但是我們沒有,甚至不需要。

所以我的fork的分支「master」實際上被命名為「korporal.master」,但github ui從未顯示出這一點,只顯示「master」。

根據我最近一直在做的事情以及當你思考它時,這是我認為在引擎蓋下發生的事情,這是非常好的設計。

出於這個原因,我認為微軟很容易在他們的visual studio team services產品中實現git forks。

簡單來說,

當您說要分配儲存庫時,您基本上是在github帳戶中的github id下建立原始儲存庫的副本。

和 當您說您正在轉殖儲存庫時,您將直接在系統(pc /膝上型電腦)中建立原始儲存庫的本地副本,而無需在github帳戶中建立副本。

在這種情況下,「fork」意味著「複製他們的**,以便我可以新增自己的修改」。 沒有什麼可說的了。 每個轉殖本質上都是乙個fork,它由原來決定是否從fork中提取更改。

轉殖涉及將git儲存庫的副本製作到本地計算機,而分叉則將儲存庫轉殖到另乙個儲存庫。 轉殖僅供個人使用(儘管可能會出現未來的合併),但是在分叉的情況下,您正在複製並開啟乙個新的可能的專案路徑

在github上下文中,fork不會擴充套件git。

它只允許在伺服器端轉殖。

在本地工作站上轉殖github儲存庫時,除非明確宣告為「貢獻者」,否則無法返回上游儲存庫。 那是因為你的轉殖是該項目的乙個單獨的例項。 如果您想為專案做出貢獻,可以通過以下方式使用分叉來執行此操作:

另請參閱 「 collaborative github workflow 」。

如果要保留與原始儲存庫(也稱為上游)的鏈結,則需要新增引用該原始儲存庫的遠端資料庫。

請參閱「 github上的源和上游有什麼區別? 」

使用git 2.20(2023年第四季度)以及更多, 使用delta島更有效率。

我一直聽到有人說他們用git**。 git「fork」聽起來像git「clone」,加上一些(無意義的)放棄未來合併的心理意願。 git中沒有fork命令,對吧?

「分叉」是乙個概念,而不是任何版本控制系統特別支援的命令。

最簡單的分叉是分支的同義詞。 每次建立分支時,無論您的vcs如何,您都「分叉」了。 這些叉子通常很容易合併在一起。

你正在談論的那種分支,乙個單獨的一方獲取**的完整副本並走開,必然發生在vcs之類的集中式系統中,如subversion。 像git這樣的分布式vcs可以更好地支援分支整個**庫並有效地啟動新專案。

git(不是github)本身支援以幾種方式「分叉」整個回購(即轉殖它):

git將更改貢獻給fork的源**就像要求原始專案中的某些人從您那裡獲取,或者請求寫訪問權來自行推送更改一樣簡單。 這是github更容易和標準化的部分。

對github的任何焦慮都會向這個方向擴充套件git? 或者任何關於git吸收功能的謠言?

沒有焦慮,因為你的假設是錯誤的。 github通過乙個漂亮的gui和乙個發布拉取請求的標準方式「擴充套件」了git的分叉功能,但它沒有向git 新增功能。 完全複製分叉的概念在基礎層面上直接進入分布式版本控制。 您可以隨時放棄github並繼續推送/拉動您「分叉」的專案。

是的,fork是乙個轉殖。 它的出現是因為,未經他們的許可你不能將他人的副本推送給他人。 他們為你製作了乙份副本( fork ),你也有寫許可權。

將來,如果實際的所有者或其他使用者擁有類似您的更改的分支,他們可以將其拉回到自己的儲存庫中。 或者,您可以向他們傳送「拉動請求」。

乍一看是「宕機」,實際上是

資料沒有丟,真好 本周一,雲頭條報道稱 github.com 已掛了 8 個小時 資料儲存裝置壞掉了 許多使用者在twitter上紛紛吐槽,抱怨 宕機,包括中國 日本的好多惴惴不安的程式設計師,一些人抱怨自己無法登入進去,或者分支版本丟失了,等等。乍一看,又是 宕機 惹的禍。可是,元芳,你怎麼看?疑...

簡單揹包問題(實際上是子集問題)

從一堆物品weight 1 weight n 中,從中選取若干件放入揹包,使其重量恰好為s 實際上對weight進行全排列,然後只要和為s,即可輸出方案。例如 how many weight do you want to input.6input 6 weight 3 4 6 5 7 2 input...

機器學習競賽實際上是一場資料競賽

希望使ai有別於其他公司的方法就是使用差異化的資料集,自己構建資料集是乙個差異化方法之一。隨著機器學習 或人工智慧 商業化的進行。競相同時定義和實現機器學習的公司驚訝地發現,實施用於使機器智慧型化的資料集或問題的演算法很容易。從谷歌tensorflow的開源機器學習框架到微軟的azure機器學習和亞...