练习 - 将项目上传到 GitHub

已完成

可以使用 GitHub 导入工具、命令行或外部迁移工具将存储库导入 GitHub。

关于 GitHub 导入工具

如果您在 Subversion、Mercurial、Team Foundation Version Control (TFVC) 或其他 Git 仓库中有源代码,可使用 GitHub 导入工具将其移至 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 上的大型文件

按照以下步骤导入存储库:

  1. 在任何页面的右上角,选择 +,然后选择“导入存储库”。

    “导入存储库”按钮的屏幕截图。

  2. 在 "Your old repository's clone URL"(旧存储库的克隆 URL)下,输入要导入的项目的 URL。

    旧存储库 URL 文本框的屏幕截图。

  3. 选择拥有存储库的用户帐户或组织,然后在 GitHub 上键入存储库的名称。

    新导入存储库所有者名称的屏幕截图。

  4. 指定新存储库是“公共”还是“专用” 。 有关详细信息,请查看设置存储库可见性。

    新存储库公共或专用选项的屏幕截图。

  5. 检查你输入的信息,然后选择“开始导入”。

    新存储库导入的“开始导入”按钮的屏幕截图。

  6. 如果旧项目受密码保护,请输入该项目的登录信息,然后选择“提交”。

    输入旧存储库凭据导入工具的位置的屏幕截图。

  7. 如果有多个项目托管在旧项目的克隆 URL 上,请选择要导入的项目,然后选择“提交”。

    在同一 URL. project 导入工具中找到的项目选择的屏幕截图。

  8. 如果项目包含超过 100 MB 的文件,请选择是否使用 Git 大型文件存储导入大型文件,然后选择“继续”。

    适用于 Git LFS 导入工具的文件的屏幕截图。

完全导入存储库后,会收到一封电子邮件。

使用 GitHub 导入工具更新提交作者归属

导入期间,您可以将仓库中的提交匹配提交作者的 GitHub 帐户。 GitHub 导入工具查找其电子邮件地址匹配您所导入仓库中提交作者的 GitHub 用户。 然后,您可以使用其电子邮件地址或作者的 GitHub 用户名将提交连接到其作者。

更新提交作者

按照以下步骤更新提交作者:

  1. 导入存储库后,在导入状态页面上,选择“匹配作者”。

    按钮的屏幕截图。

  2. 在要更新其信息的作者旁边,选择“连接”。

    连接提交作者的屏幕截图。

  3. 键入作者的电子邮件地址或 GitHub 用户名,然后按“Enter”。

将提交归于具有公共电子邮件地址的 GitHub 用户

如果导入存储库中的提交作者具有与用于创作提交的电子邮件地址关联的 GitHub 帐户,并且不会 将其提交电子邮件地址设置为专用。 然后,GitHub 导入工具将电子邮件地址(与提交到关联的公共电子邮件地址关联)与其 GitHub 帐户匹配,并将提交归因于其 GitHub 帐户。

将提交归于没有公共电子邮件地址的 GitHub 用户

如果导入存储库中的提交作者未在其 GitHub 配置文件上设置公共电子邮件地址,或者将其提交电子邮件地址设置为专用。 然后,GitHub 导入工具可能无法将与提交关联的电子邮件地址与其 GitHub 帐户匹配。

提交作者可以将其电子邮件地址设置为专用地址以解决此问题。 然后,其提交归因于<username>@users.noreply.github.com,导入的提交与其 GitHub 帐户相关联。

使用电子邮件地址归属提交

如果作者的电子邮件地址与其 GitHub 帐户不关联,他们可以在导入后将地址添加到帐户,届时,提交将正确属性化。

如果作者没有 GitHub 帐户,GitHub 导入工具 会将其提交归因于与提交关联的电子邮件地址。

使用命令行导入 GitHub 存储库

如果GitHub 导入工具不符合用途(例如,如果现有代码托管在专用网络上),建议使用命令行导入。

在开始之前,请确保您知道:

  • GitHub 用户名
  • 外部存储库的克隆 URL,例如 https://external-host.com/user/repo.gitgit://external-host.com/user/repo.git(可能 external-host.com 域名前面是 user@

为了进行演示,我们使用:

  • 名为ext-user的外部帐户
  • 外部 Git 主机 https://external-host.com
  • 名为 ghuser 的 GitHub 个人用户帐户
  • GitHub.com 上名为 repo.git 的存储库

按照以下步骤导入外部存储库:

  1. 在 GitHub 上创建一个新存储库。 将外部 Git 存储库导入到此新存储库。

  2. 在命令行上,使用外部克隆 URL 创建仓库的“裸”克隆。 此命令会创建数据的完整副本,但不创建用于编辑文件的工作目录,并确保所有旧数据的全新导出。

    $ git clone --bare https://external-host.com/ext-user/repo.git
    #Makes a bare clone of the external repository in a local directory 
    
  3. 使用“镜像”选项将本地克隆的存储库推送到 GitHub,这可确保将所有引用(例如分支和标签)复制到导入的存储库。

    $ cd repo.git
    $ git push --mirror https://github.com/ghuser/repo.git
    #Pushes the mirror to the new repository on GitHub.com 
    
  4. 删除临时本地仓库。

    $ 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 添加本地存储库:

  1. 在命令行中,导航到项目的根目录。

  2. 将本地目录初始化为 Git 仓库。

    git init -b main
    
  3. 暂存并提交项目中的所有文件。

    git add . && git commit -m "initial commit"
    
  4. 若要在 GitHub 上为项目创建存储库,请使用 gh repo create subcommand。 出现提示时,选择“将现有本地存储库推送到 GitHub”,并输入存储库所需的名称。 如果希望项目属于某个组织而不是你的用户帐户,请使用 organization-name/project-name 指定组织名称和项目名称。

  5. 按照交互式提示进行操作。 要添加远程并推送存储库,请在被要求添加远程并将提交推送到当前分支时确认“是”。

  6. 或者,若要跳过提示,请使用 --source 标志提供存储库的路径,并传递可见性标志(--public--private--internal)。 例如 gh repo create --source=. --public。 使用 --remote 标志指定远程。 要推送提交,请传递 --push 标志。 有关可能参数的详细信息,请参阅 GitHub CLI 手册。

使用 Git 将本地存储库添加到 GitHub

按照以下步骤使用 Git 添加本地存储库:

  1. 在 GitHub.com 上新建存储库。 为避免错误,请勿使用 README、许可证或gitignore files将新存储库初始化。 可以在将项目推送到 GitHub 后添加这些文件。

    创建新存储库的屏幕截图。

  2. 打开 Git Bash。

  3. 将当前工作目录更改为您的本地仓库。

  4. 将本地目录初始化为 Git 仓库。

    $ git init -b main
    
  5. 在新的本地仓库中添加文件。 此命令还会将它们暂存以进行第一次提交。

    $ git add .
    # Adds the files in the local repository and stages them for commit. To unstage a file, use 'git reset HEAD YOUR-FILE'.
    
  6. 提交在本地存储库中暂存的文件。

    $ 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.
    
  7. 在 GitHub.com 快速设置页面上的存储库顶部,选择“复制”按钮以复制远程存储库 URL。

    复制远程存储库 URL 快速设置的屏幕截图

  8. 在命令提示符下,添加远程存储库的 URL。 本地存储库被推送到此位置。

    $ git remote add origin <REMOTE_URL> 
    # Sets the new remote
    $ git remote -v
    # Verifies the new remote URL
    
  9. 将本地存储库中的更改推送到 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 导入工具从 Subversion、Mercurial、Team Foundation Version Control (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