練習 - 將專案上傳至 GitHub
您可以使用 GitHub 匯入工具、命令列或外部移轉工具,將存放庫匯入 GitHub。
關於 GitHub 匯入工具
如果您具有 Subversion、Mercurial、Team Foundation 版本控制 (TFVC) 或其他 Git 存放庫的原始程式碼,您可以使用 GitHub Importer 將其移至 GitHub。 GitHub 匯入工具是可以為您快速將原始程式碼存放庫匯入至的 GitHub 的工具,包括認可和修訂歷程記錄。
在匯入期間,視您要匯入的版本控制系統而定,您可以執行下列其中一些工作。 使用遠端存放庫進行驗證、更新認可作者屬性、使用大型檔案匯入存放庫,或如果您不想使用 Git 大型檔案儲存體,請移除大型檔案。
| 匯入動作 | Subversion | Mercurial | TFVC | Git |
|---|---|---|---|---|
| 使用遠端存放庫進行驗證 | X | X | X | X |
| 更新認可作者屬性 | X | X | X | |
| 將大型檔案移至 Git 大型檔案儲存體 | X | X | X | |
| 從存放庫移除大型檔案 | X | X | X |
使用 GitHub 匯入工具匯入存放庫
如果您擁有另一個版本控制系統上裝載的專案,您可以使用 GitHub 匯入工具自動將其匯入 GitHub。 GitHub 匯入工具不適用於所有匯入。 例如,如果您的現有程式碼裝載於私人網路,我們的工具將無法存取。 在這些情況下,建議您針對從其他版本控制系統匯入的專案,使用 Git 存放庫的命令列或外部原始程式碼移轉工具進行匯入。
如果您想要在匯入期間讓存放庫中的認可與作者的 GitHub 使用者帳戶相符。 首先,請先確定存放庫的每個參與者都有 GitHub 帳戶,然後再開始匯入。
存放庫和個別檔案受限於大小限制。 如需詳細資訊,請參閱 關於 GitHub 上的大型檔案。
若要匯入存放庫,請遵循下列步驟:
在任何網頁的右上角,選取 +,然後選取 [匯入存放庫]。
在 [您的舊存放庫的複製 URL] 底下,輸入您要匯入的專案 URL。
選擇您的使用者帳戶或組織以擁有存放庫,然後在 GitHub 上輸入存放庫的名稱。
指定新的存放庫應為公用或私人。 如需詳細資訊,請參閱 設定存放庫可見性。
檢閱您輸入的資訊,然後選取 [開始匯入]。
如果您的舊專案受到密碼保護,請輸入該專案的登入資訊,然後選取 [提交]。
如果您的舊專案複製 URL 上裝載多個專案,請選擇您想要匯入的專案,然後選取 [提交]。
如果您的專案包含大於 100 MB 的檔案,請選擇是否要使用 [Git 大型檔案儲存體] 匯入大型檔案,然後選取 [繼續]。
當存放庫完全匯入時,您會收到電子郵件。
使用 GitHub 匯入工具更新認可作者屬性
在匯入期間,您可以比對存放庫中的認可與認可作者的 GitHub 帳戶。 GitHub 匯入工具會尋找其電子郵件位址符合所要匯入存放庫中認可作者的 GitHub 使用者。 然後,您可以使用他們電子郵件地址或作者的 GitHub 使用者名稱,將認可連線到其作者。
更新認可作者
請遵循下列步驟更新認可作者:
匯入存放庫之後,在 [匯入狀態] 頁面上,選取 [比對作者]。
在您想要更新其資訊的作者旁邊,選取 [連線]。
輸入作者的電子郵件位址或 GitHub 使用者名稱,然後按 Enter。
將認可歸類為公用電子郵件地址的 GitHub 使用者
如果匯入存放庫中的認可作者具有與其用來撰寫認可之電子郵件地址相關聯的 GitHub 帳戶,則其不會將其認可電子郵件地址設定為私人。 然後,GitHub 匯入工具會比對與認可相關聯的電子郵件地址以及與其 GitHub 帳戶相關聯的公用電子郵件位址,並將認可屬性設為其 GitHub 帳戶。
將認可歸類為無公用電子郵件地址的 GitHub 使用者
如果您匯入的存放庫中的提交作者未在其 GitHub 個人檔案上設定公用電子郵件地址,或是將他們的提交電子郵件地址設為私人。 則 GitHub 匯入工具可能無法比對與認可相關聯的電子郵件地址及其 GitHub 帳戶。
認可作者可以將電子郵件地址設定為私人,以解決此問題。 其認可接著會歸類為 <username>@users.noreply.github.com,而匯入的認可將會與其 GitHub 帳戶相關聯。
使用電子郵件地址歸類認可
如果作者的電子郵件位址沒有與其 GitHub 帳戶相關聯,他們可以在匯入之後 將位址新增至其帳戶,提交將會被正確歸屬。
如果作者沒有 GitHub 帳戶,GitHub 匯入工具會將其認可歸類為與認可相關聯的電子郵件地址。
使用命令列匯入 GitHub 存放庫
如果 GitHub Importer 不適合您的用途,例如,如果您的現有程式代碼裝載在專用網上,建議您使用命令行進行匯入。
在開始之前,請確定您了解:
- 您的 GitHub 使用者名稱
- 外部存放庫的複製 URL,例如:
https://external-host.com/user/repo.git或git://external-host.com/user/repo.git(,可能具有user@網域名稱前面的external-host.com)
為了示範的目的,我們會使用:
- 名為 ext-user 的外部帳戶
- 名為
https://external-host.com的外部 Git 主機 - 名為 ghuser 的 GitHub 個人使用者帳戶
- GitHub.com 上名為 repo.git 的存放庫
請遵循這些步驟來匯入您的外部存放庫:
請在 GitHub 建立新存放庫。 您會將外部 Git 存放庫匯入至這個新的存放庫。
使用外部複製 URL 建立存放庫的「裸」複製。 在命令行上,輸入下列命令。 此命令會建立資料的完整副本,但是沒有編輯檔案的工作目錄,並且確保全新匯出所有舊資料。
$ git clone --bare https://external-host.com/ext-user/repo.git #Makes a bare clone of the external repository in a local directory使用「鏡像」選項將本機複製的存放庫推送至 GitHub,這可確保所有參考,例如:分支和標籤,都會複製到匯入的存放庫。
$ cd repo.git $ git push --mirror https://github.com/ghuser/repo.git #Pushes the mirror to the new repository on GitHub.com移除暫存本機存放庫。
$ cd .. $ rm -rf repo.git
將本機裝載的程式碼新增至 GitHub
如果您現有的原始程式碼或存放庫儲存在您的電腦或私人網路本機,您可以在終端中輸入命令,將其新增至 GitHub。 請直接輸入 Git 命令,或者使用 GitHub CLI 來執行此動作。
GitHub CLI 是開放原始碼工具,可以從電腦的命令列使用 GitHub。 GitHub CLI 可以使用命令列簡化將現有專案新增至 GitHub 的流程。 若要深入瞭解 GitHub CLI,請參閱 關於 GitHub CLI。
使用 GitHub CLI 將本機存放庫新增至 GitHub
請遵循這些步驟,以使用 GitHub CLI 新增本機存放庫:
在命令列中,瀏覽至專案的根目錄。
將本機目錄初始化為 Git 存放庫。
git init -b main暫存並認可您專案中的所有檔案。
git add . && git commit -m "initial commit"若要在 GitHub 上為您的專案建立存放庫,請使用
gh repo create subcommand。 出現提示時,請選取 [將現有的本機存放庫推送至 GitHub],然後輸入存放庫所需的名稱。 如果您想要讓專案屬於組織,而不是您的使用者帳戶,請使用organization-name/project-name指定組織名稱和專案名稱。請遵循互動式提示。 若要新增遠端並推送存放庫,請在要求新增遠端時確認 [是],並將認可推送至目前分支。
或者,若要略過所有提示,請使用
--source旗標提供存放庫的路徑,並傳遞可見度旗標 (--public、--private或--internal)。 例如:gh repo create --source=. --public。 使用--remote旗標指定遠端。 若要推送認可,請傳遞--push旗標。 如需可能自變數的詳細資訊,請參閱 GitHub CLI 手冊。
使用 Git 將本機存放庫新增至 GitHub
請遵循下列步驟,以使用 Git 新增本機存放庫:
在 GitHub.com 上建立新的存放庫。 若要避免錯誤,請勿使用讀我檔案、授權或
gitignore files初始化新的存放庫。 您可以在將這些專案推送至 GitHub 之後新增這些檔案。
開啟 Git Bash。
將目前的工作目錄變更為本機專案。
將本機目錄初始化為 Git 存放庫。
$ git init -b main在新的本機存放庫中新增檔案。 此命令也會將其暫存以用於第一次認可。
$ git add . # Adds the files in the local repository and stages them for commit. To unstage a file, use 'git reset HEAD YOUR-FILE'.認可已在您本機存放庫中暫存的檔案。
$ git commit -m "First commit" # Commits the tracked changes and prepares them to be pushed to a remote repository. To remove this commit and modify the file, use 'git reset --soft HEAD~1' and commit and add the file again.在 GitHub.com 的 [快速設定] 頁面上的存放庫頂端,選取 [複製] 按鈕以複製遠端存放庫 URL。
在命令提示字元中, 新增遠端存放庫的URL。 您的本機存放庫會推送至此位置。
$ git remote add origin <REMOTE_URL> # Sets the new remote $ git remote -v # Verifies the new remote URL將本地儲存庫中的變更推送至 GitHub.com。
$ git push origin main # Pushes the changes in your local repository up to the remote repository you specified as the origin
原始程式碼移轉工具
您可以使用外部工具將專案移至 GitHub。 我們建議使用 GitHub Importer 從 Subversion、Mercurial、Team Foundation 版本控制 (TFVC) 或其他 Git 存放庫匯入專案。 您也可以使用這些外部工具將專案轉換為 Git。
從 Subversion 匯入
在典型的 Subversion 環境中,多個專案會儲存在單一根存放庫中。 在 GitHub 上,每個這些專案通常會對應至使用者帳戶或組織的個別 Git 存放庫。 如果發生以下情況,建議您將 Subversion 存放庫的每個部分匯入至個別的 GitHub 存放庫:
- 共同作業者必須與其他部分分開簽出或認可專案的該部分
- 您希望不同的部分擁有自己的存取權限
我們建議使用這些工具將 Subversion 存放庫轉換成 Git:
從 Mercurial 匯入
我們建議 使用 hg-fast-export 將 Mercurial 存放庫轉換為 Git。
從 TFVC 匯入
我們建議使用 git-tfs 在 TFVC 與 Git 之間移動變更。
如需從 TFVC(集中式版本控制系統)移至 Git 的詳細資訊,請參閱 從集中式版本控制移轉至 Git。