Fork 是對一個倉庫的克隆。克隆一個倉庫容許你自由試驗各類改變,而不影響原始的項目。php
通常來講,forks 被用於去更改別人的項目(貢獻代碼給已經開源的項目)或者使用別人的項目做爲你本身想法的初始開發點。git
提出更改別人的項目github
使用 forks 提出改變的一個很好的例子是漏洞修復。與其記錄一個你發現的問題,不如:ruby
若是這個項目的擁有者認同你的成果,他們可能會將你的修復更新到原始的倉庫中!fetch
使用別人的項目做爲你本身想法的初始開發點spa
開源的核心是共享代碼,咱們能夠製做更好、更可靠的軟件。命令行
事實上,當你在 GitHub 上建立一個倉庫時,你能夠選擇自動包含一個許可文件,這個文件決定你是否但願將你的項目分享給其餘人。3d
Fork 一個倉庫分爲簡單的兩步。咱們已經建立了一個倉庫讓你用於練習!code
你或許已經 fork 一個項目爲了提交更改向 upstream 或原始倉庫。這種狀況下,很好的實現了將 upstream 倉庫按期同步到你的 fork。要作到這一點,你須要在命令行中使用 Git。你能夠使用你剛剛 fork 的 octocat/Spoon-Knife 倉庫去練習設置 upstream 倉庫。regexp
你首先應該 安裝 Git,若是你尚未。也不要忘記 經過 Git 驗證 GitHub。
如今,你已經成功 fork Spoon-Knife 倉庫,但在你本身的計算機上並無這個倉庫的文件。讓咱們克隆你 Fork 的代碼到你本地的計算機上。
一、在 GitHub 上,定位到你 fork 的 Spoon-Knife 倉庫。
二、在你 fork 的倉庫頁面的右側邊欄,點擊複製圖標複製你 fork 的 URL。
三、打開 Terminal 命令(針對蘋果系統用戶)或者命令提示行(針對 Windows 和 Linux 用戶)。
四、輸入 git clone
,而後粘貼在步驟 2 複製的 URL。它看起來就像以下所示,用你 GitHub 的用戶名代替 YOUR-USERNAME
:
$ git clone https://github.com/YOUR-USERNAME/Spoon-Knife
五、按下 回車鍵 ,你的本地克隆就建立了。
$ git clone https://github.com/YOUR-USERNAME/Spoon-Knife Cloning into `Spoon-Knife`... remote: Counting objects: 10, done. remote: Compressing objects: 100% (8/8), done. remove: Total 10 (delta 1), reused 10 (delta 1) Unpacking objects: 100% (10/10), done.
如今,你已經有了針對你 fork 的 Spoon-Knife 倉庫的本地克隆代碼!
當你 fork 一個項目是爲了提出更改這個原始的倉庫,你能夠配置 Git 將原始的或者 upstream 的變化更改到你本地。
一、在 GitHub 上,定位到 octocat/Spoon-Knife 倉庫。
二、在這個倉庫頁面的右側邊欄,點擊複製圖標複製這個倉庫的 URL。
三、打開 Terminal 命令(針對 Mac 用戶)或提示命令行(Windows 和 Linux 用戶)。
四、更改到你在步驟 2(建立一個本地)建立的你的 fork 的本地的目錄。
cd
。ls
,列出當前目錄的文件和文件夾。cd
目錄名」進入你輸入的目錄下。cd ..
回到上一目錄。五、輸入 git remove -v
,按下回車鍵,你將會看到你的 fork 當前配置的遠程倉庫:
$ git remote -v origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch) origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
六、輸入 git remote add upstream
,而後粘貼你在步驟 2 複製的 URL 並按下回車鍵。它看起來以下所示:
$ git remote add upstream https://github.com/octocat/Spoon-Knife.git
七、驗證你 fork 裏新指明的這個 upstream 倉庫,再次輸入 git remote -v
。你將會看到你 fork 的 URL 做爲原始的地址,而原始的倉庫的 URL 做爲 upstream。
$ git remote -v origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch) origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push) upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch) upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)
如今,你能夠保持你的 fork 與 upstream 的倉庫的同步,利用幾個 Git 命令。想知道更多信息,請參閱 Syncing a fork。
豆電雨 -- 摘自極客學院。