Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.

管理远程仓库

了解如何使用计算机上的本地仓库以及 GitHub 上托管的远程仓库。

添加远程仓库

要新增远程,请在终端上存储存储库的目录中使用 git remote add 命令。

git remote add 命令采用两个参数:

  • 远程名称(例如 origin
  • 远程 URL(例如 https://github.com/user/repo.git

例如:

$ git remote add origin https://github.com/USER/REPO.git
# Set a new remote

$ git remote -v
# Verify new remote
> origin  https://github.com/USER/REPO.git (fetch)
> origin  https://github.com/USER/REPO.git (push)

有关要使用的 URL 的详细信息,请参阅“关于远程存储库”。

故障排除:远程原点已存在

此错误消息表示您尝试添加的远程与本地仓库中的远程名称相同。

$ git remote add origin https://github.com/octocat/Spoon-Knife.git
> fatal: remote origin already exists.

若要解决此问题,可以:

  • 对新远程使用不同的名称。
  • 在添加新的远程之前,重命名现有的远程仓库。 有关详细信息,请参阅下面的“重命名远程存储库”。
  • 在添加新的远程之前,删除现有的远程仓库。 有关详细信息,请参阅下面的“删除远程存储库”。

更改远程仓库的 URL

git remote set-url 命令更改现有的远程存储库 URL。

提示:有关 HTTPS 和 SSH URL 之间区别的信息,请参阅“关于远程存储库”。

git remote set-url 命令采用两个参数:

  • 现有远程仓库的名称。 例如,originupstream 是两个常见的选项。
  • 远程仓库的新 URL。 例如:
    • 如果您要更新为使用 HTTPS,您的 URL 可能如下所示:
      https://github.com/USERNAME/REPOSITORY.git
    • 如果您要更新为使用 SSH,您的 URL 可能如下所示:
      git@github.com:USERNAME/REPOSITORY.git

将远程 URL 从 SSH 切换到 HTTPS

  1. 打开终端终端Git Bash
  2. 将当前工作目录更改为您的本地仓库。
  3. 列出现有远程仓库以获取要更改的远程仓库的名称。
    $ git remote -v
    > origin  git@github.com:USERNAME/REPOSITORY.git (fetch)
    > origin  git@github.com:USERNAME/REPOSITORY.git (push)
  4. 使用 git remote set-url 命令将远程 URL 从 SSH 更改为 HTTPS。
    $ git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
  5. 验证远程 URL 是否已更改。
    $ git remote -v
    # Verify new remote URL
    > origin  https://github.com/USERNAME/REPOSITORY.git (fetch)
    > origin  https://github.com/USERNAME/REPOSITORY.git (push)

下次将 git fetchgit pullgit push 执行到远程存储库时,系统将要求你提供 GitHub 用户名和密码。 当 Git 提示你输入密码时,请输入你的personal access token。 或者,可以使用 Git Credential Manager 等凭据帮助程序。Git 的基于密码的身份验证已被删除,以支持更安全的身份验证方法。有关详细信息,请参阅“创建personal access token”。

可以使用凭据帮助程序,以便 Git 每次与 GitHub 通信时都会记住你的 GitHub 用户名和 personal access token。

将远程 URL 从 HTTPS 切换到 SSH

  1. 打开终端终端Git Bash
  2. 将当前工作目录更改为您的本地仓库。
  3. 列出现有远程仓库以获取要更改的远程仓库的名称。
    $ git remote -v
    > origin  https://github.com/USERNAME/REPOSITORY.git (fetch)
    > origin  https://github.com/USERNAME/REPOSITORY.git (push)
  4. 使用 git remote set-url 命令将远程 URL 从 HTTPS 更改为 SSH。
    $ git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
  5. 验证远程 URL 是否已更改。
    $ git remote -v
    # Verify new remote URL
    > origin  git@github.com: USERNAME/REPOSITORY.git (fetch)
    > origin  git@github.com: USERNAME/REPOSITORY.git (push)

故障排除:没有该远程 '[name]'

此错误表示您尝试更改的远程不存在:

$ git remote set-url sofake https://github.com/octocat/Spoon-Knife
> fatal: No such remote 'sofake'

检查您是否正确键入了远程仓库的名称。

重命名远程仓库

使用 git remote rename 命令重命名现有远程。

git remote rename 命令采用两个参数:

  • 现有远程名称(例如 origin
  • 远程的新名称(例如 destination

示例

这些示例假定使用 HTTPS 进行克隆(建议这样做)。

$ git remote -v
# View existing remotes
> origin  https://github.com/OWNER/REPOSITORY.git (fetch)
> origin  https://github.com/OWNER/REPOSITORY.git (push)

$ git remote rename origin destination
# Change remote name from 'origin' to 'destination'

$ git remote -v
# Verify remote's new name
> destination  https://github.com/OWNER/REPOSITORY.git (fetch)
> destination  https://github.com/OWNER/REPOSITORY.git (push)

故障排除:无法将配置部分 'remote.[old name]' 重命名为 'remote.[new name]'

此错误表示您键入的旧远程名称不存在。

可以使用 git remote -v 命令检查当前存在的远程:

$ git remote -v
# View existing remotes
> origin  https://github.com/OWNER/REPOSITORY.git (fetch)
> origin  https://github.com/OWNER/REPOSITORY.git (push)

故障排除:远程 [new name] 已存在

此错误表示您要使用的远程名称已经存在。 要解决此问题,使用不同的远程名称,或重命名原始远程。

删除远程仓库

使用 git remote rm 命令从存储库中删除远程 URL。

git remote rm 命令采用一个参数:

  • 远程名称(例如 destination

从存储库中删除远程 URL 只会取消本地和远程存储库的链接。 它不会删除远程存储库。

示例

这些示例假定使用 HTTPS 进行克隆(建议这样做)。

$ git remote -v
# View current remotes
> origin  https://github.com/OWNER/REPOSITORY.git (fetch)
> origin  https://github.com/OWNER/REPOSITORY.git (push)
> destination  https://github.com/FORKER/REPOSITORY.git (fetch)
> destination  https://github.com/FORKER/REPOSITORY.git (push)

$ git remote rm destination
# Remove remote
$ git remote -v
# Verify it's gone
> origin  https://github.com/OWNER/REPOSITORY.git (fetch)
> origin  https://github.com/OWNER/REPOSITORY.git (push)

注意:git remote rm 不会从服务器中删除远程存储库。 它只是从本地存储库中删除远程及其引用。

故障排除:无法删除配置部分 'remote.[name]'

此错误表示您尝试删除的远程不存在:

$ git remote rm sofake
> error: Could not remove config section 'remote.sofake'

检查您是否正确键入了远程仓库的名称。

延伸阅读