標籤:

GitHub 的 Fork 是什麼意思?


上面說的都是局部,其實是forking 工作流的一個功能。

詳情:translations/workflow-forking.md at master · oldratlee/translations · GitHub

2.在Github和Git上fork之簡單指南


相當於你在原項目的主分支上又建立了一個分支,你可以在該分支上任意修改,如果想將你的修改合併到原項目中時,可以pull request,這樣原項目的作者就可以將你修改的東西合併到原項目的主分支上去,這樣你就為開源項目貢獻了代碼,開源項目就會在大家共同的努力下不斷壯大和完善。


簡單的說明:

GitHub中Fork 即是 服務端的倉庫克隆,包含了原來的倉庫(即upstream repository,上游倉庫)所有內容,如分支、Tag、提交;代碼託管服務(如Github、BitBucket)提供了方便的完成Fork操作的功能(在倉庫頁面點一下Fork按鈕)。這樣有了一個你自己的可以自由提交的倉庫,然後可以通過的PullRequest把你的提交貢獻回 原倉庫。

而對於原倉庫Owner來說,鼓勵別人Fork自己的倉庫,通過PullRequest給自己的倉庫做貢獻,也能提高了自己倉庫的知名度

要更多地了解GitHub中Fork ,參見本人的中文譯文:

1.《Forking工作流》 https://github.com/oldratlee/translations/blob/master/git-workflows-and-tutorials/workflow-forking.md

2. 以及《Pull Request工作流》oldratlee/translations

3. 各個相關的典型工作流的體系綜述 參見:《Git工作流指南》 https://github.com/oldratlee/translations/blob/master/git-workflows-and-tutorials/README.md

--- 分 --- 割 --- 線 ---

展開來說明,如下:

1. 先簡單地說說一下詞源

以方便從常見簡單的意思 理解到 引申比喻的意思~

Fork 的本義是 叉子(名詞)

比較自然的引申成 分叉(動詞) ,就像上面叉子,從左到從右,一條線變成多條了。

更多 詞含義參見 fork是什麼意思_fork在線翻譯。

2. 在計算機中,Fork一詞的使用

2.1 Git/GitHub倉庫克隆

Git/GitHub 用戶下面的圖 來表達 Fork:分叉、克隆 出一個(倉庫的)新拷貝。

要了解GitHub中Fork的話 ,如 @李雨澤 回答中所說的,其實是要理解的是 forking 工作流,參見本人的中文譯文《Forking工作流》 https://github.com/oldratlee/translations/blob/master/git-workflows-and-tutorials/workflow-forking.md,以及相關的典型工作流 《Git工作流指南》 oldratlee/translations

2.2 Linux 的 Fork 函數

運行著的程序分成2個(幾乎)完全一樣的進程,每個進程都啟動一個從代碼的同一位置開始執行的線程,這兩個進程中的線程繼續執行,就像是兩個用戶同時啟動了該應用程序的兩個副本。

# 詳見 fork_百度百科

Fork 函數的命名所表達含義/比喻 和 GitHub中Fork 類似。

可見,Fork一詞在計算機界 這樣的用法 也是 由來已久

# Fork 函數 具體命名出現的時間 還沒有考證,歡迎 Linux高手給出考證。

3. 為什麼Fork會火起來( 有些和樓主本義無關的閑話 :)

在『碼農』圈 Fork一詞,現在確實很火,當然和『全球最大的同性交友網站的GitHub』流行而大大提高出鏡率有關係,常常可以看到『Fork me』這個詞,鼓勵別人Fork自己的倉庫,通過PullRequest給自己的倉庫做貢獻,也是提高了自己倉庫的知名度。

# 關於 PullRequest 參見 oldratlee/translations

另外,個人覺得的原因是:

1. Fork 一詞 諧音了 『F*ck』,『Fork(F*ck) me』能體現自己的幽默態度。有Sex暗示的內容總是容易讓人興奮和記住,人的本性,哈哈

2. Fork也是有那方面的含義:Forking - A sexual act.

詳見 https://answers.yahoo.com/question/index?qid=20080812235131AAlzJmn


影分身之術,


(2014/11/12更新)

fork 分支分流的意思

fork 目的是將來能夠為項目貢獻代碼

這麼來講:

感覺項目特別棒並且想要為之做出貢獻,要是不能做出貢獻其實 fork 就沒有什麼意義。

拿 bootstrap 來舉例子,你 fork 了bootstrap 項目之後再你的倉庫中就會出現一份完全一樣的 bootstrap ,這是你的 bootstrap 只是官方 bootstrap 的一個分支,絲毫不會影響到官方。

你看到了 bootstrap 中的一個 bug ,並且在自己分支的 bootstrap 中修復了這個bug,崇尚開源精神的你怎麼能無動於衷,你想要貢獻自己的一份力量,這時你就可以向官方 bootstrap 提出合併請求。

我是在這裡學的,廖雪峰前輩的git教程中github使用一節,使用GitHub - 廖雪峰的官方網站。

就這樣。


同性之間的調情暗號,最早見於全球最大的同性交友網站github


用叉子把別人的東西(copy not cut)叉到你碗里~


可譯為復刻

就是把別人的項目clone一份,但是owner變成自己。

這樣你就可以在遵守Open source license的前提下任意修改這個項目了。


fork 之後某種意義變成了你自己的項目,如果需要發現bug或者有好的想法自己倉庫改完,之後可以pull request 到主項目當中。如果主項目的管理員覺得你這個不錯可以merge你的request。


hot13399/spring-mvc-mini · GitHub fock就是新建一個自己的分支,可以在上面改代碼,然後提交。但是提交的內容在你自己的fork上面,要想合併到trunk需要提pull request


Fork 的作用主要有兩個。

  1. 對該項目提出改動意見。
  2. 使用其它的人的項目作為自己項目的起點。

Fork 之後也可以保持對上游項目(你fork的項目)的同步,在自己的項目中添加上游項目的地址即可。當然你需要手動解決同步過程的衝突。

詳情請見官方文檔:

Fork A Repo - User Documentation

Syncing a fork


fuck me ..... 想就下載開源的版本,大概是原意吧


fork:做不及物動詞使用的意思是 做一個分支,只不過這個分支是你要貢獻的那個開源倉庫的複製品。也可以理解為把別人伺服器上的代碼倉庫複製到你的伺服器上,然後克隆到你的電腦上,做修改後,先提交到你自己的伺服器上,最後向作者提交合併申請


我覺得Bookw0rm的解釋很形象,叉到自己的碗里來


那麼再請教一下,fork出來的分支,過了一段時間,fork的源有了更新,會體現在我的分支上么?

比如主幹上有兩個文件a、b,如果我fork了一個分支出來,我修改了b,這時主幹上的a發生了改變,那麼這個a的改變會體現在我fork的分支上么?很低級的問題,勿噴


fork 功能在 開源的路上可以走的很遠。。。


是等價的分支,分叉的意思。


假如 A fork B 之後 B 會多一個分支嗎?
還是單純的只把源碼fork到A的倉庫中去


支持自己維護的fork算contributions,請點贊。。。


推薦閱讀:

如何寫好Github中的readme?
Git 真的是 Linus Torvalds 兩周寫出來的嗎?
如何評價知乎用戶秋風(AutumnsWinds)GitHub項目與其他現有項目高度雷同?
GitHub 是怎樣的一個存在?
Windows 用戶如何運行一個 GitHub 上的 Python 腳本?

TAG:GitHub |