添加远程仓库
要新增远程,请在终端上存储仓库的目录中使用 git remote add
命令。
git remote add
命令使用两个参数:
- 远程命令,如
origin
- 远程 URL,如
https://[hostname]/user/repo.git
例如:
$ git remote add origin https://hostname/user/repo.git
# Set a new remote
$ git remote -v
# Verify new remote
> origin https://hostname/user/repo.git (fetch)
> origin https://hostname/user/repo.git (push)
有关使用哪个 URL 的更多信息,请参阅“关于远程仓库”。
故障排除:远程原点已存在
此错误消息表示您尝试添加的远程与本地仓库中的远程名称相同。
$ git remote add origin https://hostname/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@hostname:USERNAME/REPOSITORY.git
- 如果您要更新为使用 HTTPS,您的 URL 可能如下所示:
将远程 URL 从 SSH 切换到 HTTPS
- 打开 Terminal(终端)Terminal(终端)Git Bash。
- 将当前工作目录更改为您的本地仓库。
- 列出现有远程仓库以获取要更改的远程仓库的名称。
$ git remote -v > origin git@hostname:USERNAME/REPOSITORY.git (fetch) > origin git@hostname:USERNAME/REPOSITORY.git (push)
- 使用
git remote set-url
命令将远程的 URL 从 SSH 更改为 HTTPS。$ git remote set-url origin https://hostname/USERNAME/REPOSITORY.git
- 验证远程 URL 是否已更改。
$ git remote -v # Verify new remote URL > origin https://hostname/USERNAME/REPOSITORY.git (fetch) > origin https://hostname/USERNAME/REPOSITORY.git (push)
下次对远程仓库执行 git fetch
、git pull
或 git push
操作时,您需要提供 GitHub 用户名和密码。 当 Git 提示您输入密码时,请输入您的个人访问令牌 (PAT)。 基于密码的身份验证对 Git 已弃用,使用 PAT 更安全。 更多信息请参阅“创建个人访问令牌”。
您可以使用凭据小助手让 Git 在每次与 GitHub 会话时记住您的 GitHub 用户名和个人访问令牌。
将远程 URL 从 HTTPS 切换到 SSH
- 打开 Terminal(终端)Terminal(终端)Git Bash。
- 将当前工作目录更改为您的本地仓库。
- 列出现有远程仓库以获取要更改的远程仓库的名称。
$ git remote -v > origin https://hostname/USERNAME/REPOSITORY.git (fetch) > origin https://hostname/USERNAME/REPOSITORY.git (push)
- 使用
git remote set-url
命令将远程的 URL 从 HTTPS 更改为 SSH。$ git remote set-url origin git@hostname:USERNAME/REPOSITORY.git
- 验证远程 URL 是否已更改。
$ git remote -v # Verify new remote URL > origin git@hostname:USERNAME/REPOSITORY.git (fetch) > origin git@hostname:USERNAME/REPOSITORY.git (push)
故障排除:没有该远程 '[name]'
此错误表示您尝试更改的远程不存在:
$ git remote set-url sofake https://hostname/octocat/Spoon-Knife
> fatal: No such remote 'sofake'
检查您是否正确键入了远程仓库的名称。
重命名远程仓库
使用 git remote rename
命令可重命名现有的远程。
git remote rename
命令使用两个参数:
- 现有的远程名称,例如
origin
- 远程的新名称,例如
destination
示例
以下示例假设您使用 HTTPS 克隆,即推荐使用的方法。
$ git remote -v
# 查看现有远程
> origin https://hostname/OWNER/REPOSITORY.git (fetch)
> origin https://hostname/OWNER/REPOSITORY.git (push)
$ git remote rename origin destination
# 将远程名称从 'origin' 更改为 'destination'
$ git remote -v
# 验证远程的新名称
> destination https://hostname/OWNER/REPOSITORY.git (fetch)
> destination https://hostname/OWNER/REPOSITORY.git (push)
故障排除:无法将配置部分 'remote.[old name]' 重命名为 'remote.[new name]'
此错误表示您输入旧远程名称尝试的远程不存在。
您可以使用 git remote -v
命令检查当前存在哪些远程:
$ git remote -v
# 查看现有远程
> origin https://hostname/OWNER/REPOSITORY.git (fetch)
> origin https://hostname/OWNER/REPOSITORY.git (push)
故障排除:远程 [new name] 已存在
此错误表示您要使用的远程名称已经存在。 要解决此问题,使用不同的远程名称,或重命名原始远程。
删除远程仓库
使用 git remote rm
命令可从仓库中删除远程 URL。
git remote rm
命令使用一个参数:
- 远程名称,例如
destination
示例
以下示例假设您使用 HTTPS 克隆,即推荐使用的方法。
$ git remote -v
# 查看当前远程
> origin https://hostname/OWNER/REPOSITORY.git (fetch)
> origin https://hostname/OWNER/REPOSITORY.git (push)
> destination https://hostname/FORKER/REPOSITORY.git (fetch)
> destination https://hostname/FORKER/REPOSITORY.git (push)
$ git remote rm destination
# 删除远程
$ git remote -v
# 验证其已删除
> origin https://hostname/OWNER/REPOSITORY.git (fetch)
> origin https://hostname/OWNER/REPOSITORY.git (push)
注:git remote rm
不会从服务器中删除远程仓库。 它只是从本地仓库中删除远程及其引用。
故障排除:无法删除配置部分 'remote.[name]'
此错误表示您尝试删除的远程不存在:
$ git remote rm sofake
> error: Could not remove config section 'remote.sofake'
检查您是否正确键入了远程仓库的名称。
延伸阅读
- Pro Git 书籍中的“使用远程”