Fork a repo
復(fù)刻是倉庫的副本。 通過復(fù)刻倉庫,您可以自由地嘗試更改而不會影響原始項目。
關(guān)于復(fù)刻
最常見的是,復(fù)刻用于對其他人的項目提出您沒有寫入權(quán)限的項目的更改,或者使用其他人的項目作為您自己想法的起點(diǎn)。 您可以復(fù)刻倉庫以創(chuàng)建倉庫的副本,并在不影響上游倉庫的情況下進(jìn)行更改。 更多信息請參閱“使用復(fù)刻”。
對其他人的項目提出更改
例如,可以使用復(fù)刻提出與修復(fù) Bug 相關(guān)的更改。 無需為您發(fā)現(xiàn)的漏洞創(chuàng)建議題,您可以:
復(fù)刻倉庫
進(jìn)行修復(fù)
向項目所有者提交拉取請求。
將其他人的項目用作自己創(chuàng)意的起點(diǎn)。
開源軟件的理念是通過共享代碼,可以開發(fā)出更好、更可靠的軟件。 更多信息請參閱 Open Source Initiative(開源倡議)上的“關(guān)于開源倡議”。
有關(guān)將開源原則應(yīng)用于組織在 GitHub.com 上的開發(fā)工作的詳細(xì)信息,請參閱 GitHub 的白皮書“內(nèi)部來源簡介”。
從其他人的項目復(fù)刻創(chuàng)建公共倉庫時,請確保包含許可文件以確定您希望與其他人共享項目。 更多信息請參閱 choosealicense.com 上的“選擇開源許可”。
為深入了解開源,特別是如何創(chuàng)建和發(fā)展開源項目,我們制作了開源指南,它將推薦關(guān)于創(chuàng)建和維護(hù)開源項目倉庫的最佳實(shí)踐,幫助您培養(yǎng)一個健康發(fā)展的開源社區(qū)。 您還可以免費(fèi)學(xué)習(xí)關(guān)于維護(hù)開源社區(qū)的?GitHub Learning Lab?課程。
基本要求
如果尚未設(shè)置 Git,您應(yīng)該先設(shè)置它。 不要忘記從 Git 設(shè)置向 GitHub.com 驗(yàn)證。
復(fù)刻倉庫
您可能為了對上游或原始倉庫提議更改而復(fù)刻項目。 在這種情況下,最好定期將您的復(fù)刻與上游倉庫同步。 為此,您需要在命令行上使用 Git。 您可以使用剛才復(fù)刻的?octocat/Spoon-Knife?倉庫練習(xí)設(shè)置上游倉庫。
在 GitHub.com 上,導(dǎo)航到?octocat/Spoon-Knife?存儲庫。
在頁面的右上角,單擊?Fork(復(fù)刻)。
要了解有關(guān) GitHub CLI 的更多信息,請參閱“關(guān)于 GitHub CLI”。
要創(chuàng)建倉庫的復(fù)刻,請使用?gh repo fork
?子命令。
gh repo fork repository
要在組織中創(chuàng)建復(fù)刻,請使用?- org
?標(biāo)記。
gh repo fork repository --org "octo-org"
克隆復(fù)刻的倉庫
現(xiàn)在,您有了 Spoon-Knife 倉庫的復(fù)刻,但您的計算機(jī)本地還沒有該倉庫中的文件。
在 GitHub.com 上,導(dǎo)航到您在 Spoon-Knife 存儲庫的復(fù)刻。
在文件列表上方,單擊??****Code(代碼)。

要使用 HTTPS 克隆倉庫,請在“Clone with HTTPS(使用 HTTPS 克?。毕聠螕?. To clone the repository using an SSH key, including a certificate issued by your organization's SSH certificate authority, click?Use SSH, then click?. To clone a repository using GitHub CLI, click?Use GitHub CLI, then click?.


打開?Terminal(終端)Terminal(終端)Git Bash。
將當(dāng)前的工作目錄更改為您想要存儲克隆目錄的位置。
鍵入?
git clone
,然后粘貼先前復(fù)制的 URL。 它將如下所示,使用您的 GitHub 用戶名替換?YOUR-USERNAME
:$ git clone https://github.com/YOUR-USERNAME/Spoon-Knife
按?Enter?鍵。 將創(chuàng)建您的本地克隆。
$ 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.
要了解有關(guān) GitHub CLI 的更多信息,請參閱“關(guān)于 GitHub CLI”。
要創(chuàng)建復(fù)刻的克隆,請使用?--clone
?標(biāo)記。
gh repo fork repository --clone=true
在?File(文件)菜單中,單擊?Clone Repository(克隆倉庫)。


單擊與要克隆的倉庫位置對應(yīng)的選項卡。 您也可以單擊?URL?手動輸入倉庫位置。


從列表中選擇要克隆的倉庫。


單擊?Choose...(選擇...)并找到要克隆倉庫的本地路徑。


單擊?Clone(克隆)。


配置 Git 以將您的復(fù)刻與原始倉庫同步
為了對原始倉庫提議更改而復(fù)刻項目時,您可以配置 Git 以將更改從原始或上游倉庫拉取到復(fù)刻的本地克隆。
在 GitHub.com 上,導(dǎo)航到?octocat/Spoon-Knife?存儲庫。
在文件列表上方,單擊??****Code(代碼)。

要使用 HTTPS 克隆倉庫,請在“Clone with HTTPS(使用 HTTPS 克?。毕聠螕?. To clone the repository using an SSH key, including a certificate issued by your organization's SSH certificate authority, click?Use SSH, then click?. To clone a repository using GitHub CLI, click?Use GitHub CLI, then click?.


打開?Terminal(終端)Terminal(終端)Git Bash。
將目錄更改為您克隆的復(fù)刻的位置。
要轉(zhuǎn)到主目錄,請只鍵入?
cd
,不要鍵入其他文本。要列出當(dāng)前目錄中的文件和文件夾,請鍵入?
ls
。要進(jìn)入列出的某個目錄,請鍵入?
cd your_listed_directory
。要回到上一個目錄,請鍵入?
cd ..
。鍵入?
git remote -v
,然后按?Enter?鍵。 您將看到當(dāng)前為復(fù)刻配置的遠(yuǎn)程倉庫。$ 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 步中復(fù)制的 URL 并按?Enter?鍵。 它將如下所示:$ git remote add upstream https://github.com/octocat/Spoon-Knife.git
要驗(yàn)證為復(fù)刻指定的新上游倉庫,請再次鍵入?
git remote -v
。 您應(yīng)該看到復(fù)刻的 URL 為?origin
,原始倉庫的 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)
現(xiàn)在,您可以使用一些 Git 命令使您的復(fù)刻與上游倉庫保持同步。 更多信息請參閱“同步復(fù)刻”。
要了解有關(guān) GitHub CLI 的更多信息,請參閱“關(guān)于 GitHub CLI”。
要為復(fù)刻的倉庫配置遠(yuǎn)程倉庫,請使用?--remote
?標(biāo)記。
gh repo fork repository --remote=true
要指定遠(yuǎn)程倉庫的名稱,請使用?--remote-name
?標(biāo)記。
gh repo fork repository --remote-name "main-remote-repo"
后續(xù)步驟
您可以對復(fù)刻進(jìn)行任何更改,包括:
創(chuàng)建分支:分支允許您在不影響主項目的情況下構(gòu)建新功能或測試創(chuàng)意。
打開拉取請求:如果您希望回饋原始倉庫,您可以通過提交拉取請求請求原作者將您的復(fù)刻拉取到他們的倉庫。
另找一個倉庫進(jìn)行復(fù)刻
復(fù)刻倉庫,開始參與項目。 您可以將倉庫復(fù)刻到您的用戶帳戶或具有倉庫創(chuàng)建權(quán)限的任何組織。 更多信息請參閱“組織中的角色”。
如果您可以訪問私有倉庫且所有者允許復(fù)刻,則您可以將該倉庫復(fù)刻到您的用戶帳戶或者 GitHub Team 上您具有倉庫創(chuàng)建權(quán)限的任何組織。 您不能將私有倉庫復(fù)刻到使用 GitHub Free 的組織。 更多信息請參閱“GitHub 的產(chǎn)品”。
您可以瀏覽?Explore?以查找項目并開始參與開源倉庫。 更多信息請參閱“尋找在 GitHub 上參與開源項目的方法”。

原文網(wǎng)址
https://docs.github.com/cn/get-started/quickstart/fork-a-repo