管理远程仓库

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

添加远程仓库

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

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

  • 远程命令,如 origin
  • 远程 URL,如 https://[hostname]/user/repo.git

例如:

$ git remote add origin https://主机名/user/repo.git
# Set a new remote

$ git remote -v
# Verify new remote
> origin  https://主机名/user/repo.git (fetch)
> origin  https://主机名/user/repo.git (push)

有关使用哪个 URL 的更多信息,请参阅“关于远程仓库”。

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

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

$ git remote add origin https://主机名/octocat/Spoon-Knife.git
> fatal: remote origin already exists.

要修复此问题,您可以:

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

更改远程仓库的 URL

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

提示: 有关 HTTPS 与 SSH URL 之间的差异,请参阅“关于远程仓库

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

  • 现有远程仓库的名称。 例如,源仓库上游仓库是两种常见选择。
  • 远程仓库的新 URL。 例如:
    • 如果您要更新为使用 HTTPS,您的 URL 可能如下所示:
      https://[hostname]/USERNAME/REPOSITORY.git
    • 如果您要更新为使用 SSH,您的 URL 可能如下所示:
      git@主机名:USERNAME/REPOSITORY.git

将远程 URL 从 SSH 切换到 HTTPS

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

下次对远程仓库执行 git fetchgit pullgit push 操作时,您需要提供 GitHub 用户名和密码。 When Git prompts you for your password, enter your personal access token (PAT) instead. Password-based authentication for Git has been removed, and using a PAT is more secure. For more information, see "Creating a personal access token."

您可以使用凭据小助手让 Git 在每次与 GitHub 会话时记住您的 GitHub 用户名和个人访问令牌。

将远程 URL 从 HTTPS 切换到 SSH

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

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

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

$ git remote set-url sofake https://主机名/octocat/Spoon-Knife
> fatal: No such remote 'sofake'

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

重命名远程仓库

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

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

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

示例

以下示例假设您使用 HTTPS 克隆,即推荐使用的方法。

$ git remote -v
# 查看现有远程
> origin  https://主机名/OWNER/REPOSITORY.git (fetch)
> origin  https://主机名/OWNER/REPOSITORY.git (push)

$ git remote rename origin destination
# 将远程名称从 'origin' 更改为 'destination'

$ git remote -v
# 验证远程的新名称
> destination  https://主机名/OWNER/REPOSITORY.git (fetch)
> destination  https://主机名/OWNER/REPOSITORY.git (push)

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

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

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

$ git remote -v
# 查看现有远程
> origin  https://主机名/OWNER/REPOSITORY.git (fetch)
> origin  https://主机名/OWNER/REPOSITORY.git (push)

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

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

删除远程仓库

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

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

  • 远程名称,例如 destination

示例

以下示例假设您使用 HTTPS 克隆,即推荐使用的方法。

$ git remote -v
# 查看当前远程
> origin  https://主机名/OWNER/REPOSITORY.git (fetch)
> origin  https://主机名/OWNER/REPOSITORY.git (push)
> destination  https://主机名/FORKER/REPOSITORY.git (fetch)
> destination  https://主机名/FORKER/REPOSITORY.git (push)

$ git remote rm destination
# 删除远程
$ git remote -v
# 验证其已删除
> origin  https://主机名/OWNER/REPOSITORY.git (fetch)
> origin  https://主机名/OWNER/REPOSITORY.git (push)

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

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

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

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

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

延伸阅读

此文档对您有帮助吗?

隐私政策

帮助我们创建出色的文档!

所有 GitHub 文档都是开源的。看到错误或不清楚的内容了吗?提交拉取请求。

做出贡献

或, 了解如何参与。