添加远程仓库
要新增远程,请在终端上存储存储库的目录中使用 git remote add
命令。
git remote add
命令采用两个参数:
- 远程名称(例如
origin
) - 远程 URL(例如
https://HOSTNAME/OWNER/REPOSITORY.git
)
例如:
$ git remote add origin https://HOSTNAME/OWNER/REPOSITORY.git
# Set a new remote
$ git remote -v
# Verify new remote
> origin https://HOSTNAME/OWNER/REPOSITORY.git (fetch)
> origin https://HOSTNAME/OWNER/REPOSITORY.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
命令采用两个参数:
-
现有远程仓库的名称。 例如,
origin
或upstream
是两个常见的选项。 -
远程仓库的新 URL。 例如:
- 如果您要更新为使用 HTTPS,您的 URL 可能如下所示:
https://HOSTNAME/OWNER/REPOSITORY.git
- 如果您要更新为使用 SSH,您的 URL 可能如下所示:
git@HOSTNAME:OWNER/REPOSITORY.git
将远程 URL 从 SSH 切换到 HTTPS
-
打开终端终端Git Bash。
-
将当前工作目录更改为您的本地仓库。
-
列出现有远程仓库以获取要更改的远程仓库的名称。
$ git remote -v > origin git@HOSTNAME:OWNER/REPOSITORY.git (fetch) > origin git@HOSTNAME:OWNER/REPOSITORY.git (push)
-
使用
git remote set-url
命令将远程 URL 从 SSH 更改为 HTTPS。git remote set-url origin https://HOSTNAME/OWNER/REPOSITORY.git
-
验证远程 URL 是否已更改。
$ git remote -v # Verify new remote URL > origin https://HOSTNAME/OWNER/REPOSITORY.git (fetch) > origin https://HOSTNAME/OWNER/REPOSITORY.git (push)
下次将 git fetch
、git pull
或 git push
执行到远程存储库时,系统将要求你提供 GitHub 用户名和密码。 当 Git 提示你输入密码时,请输入你的personal access token。 或者,可以使用 Git 凭据管理器等凭据帮助程序。 Git 的基于密码的身份验证已被删除,取而代之的是更安全的身份验证方法。 有关详细信息,请参阅“管理个人访问令牌”。
可以使用凭据帮助程序,以便 Git 每次与 GitHub 通信时都会记住你的 GitHub 用户名和 personal access token。
将远程 URL 从 HTTPS 切换到 SSH
-
打开终端终端Git Bash。
-
将当前工作目录更改为您的本地仓库。
-
列出现有远程仓库以获取要更改的远程仓库的名称。
$ git remote -v > origin https://HOSTNAME/OWNER/REPOSITORY.git (fetch) > origin https://HOSTNAME/OWNER/REPOSITORY.git (push)
-
使用
git remote set-url
命令将远程 URL 从 HTTPS 更改为 SSH。git remote set-url origin git@HOSTNAME:OWNER/REPOSITORY.git
-
验证远程 URL 是否已更改。
$ git remote -v # Verify new remote URL > origin git@HOSTNAME:OWNER/REPOSITORY.git (fetch) > origin git@HOSTNAME:OWNER/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
# View existing remotes
> origin https://HOSTNAME/OWNER/REPOSITORY.git (fetch)
> origin https://HOSTNAME/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://HOSTNAME/OWNER/REPOSITORY.git (fetch)
> destination https://HOSTNAME/OWNER/REPOSITORY.git (push)
故障排除:无法将配置部分 'remote.[old name]' 重命名为 'remote.[new name]'
此错误表示您键入的旧远程名称不存在。
可以使用 git remote -v
命令检查当前存在的远程:
$ git remote -v
# View existing remotes
> origin https://HOSTNAME/OWNER/REPOSITORY.git (fetch)
> origin https://HOSTNAME/OWNER/REPOSITORY.git (push)
故障排除:远程 [new name] 已存在
此错误表示您要使用的远程名称已经存在。 要解决此问题,使用不同的远程名称,或重命名原始远程。
删除远程仓库
使用 git remote rm
命令从存储库中删除远程 URL。
git remote rm
命令采用一个参数:
- 远程名称(例如
destination
)
从存储库中删除远程 URL 只会取消本地和远程存储库的链接。 它不会删除远程存储库。
删除远程存储库的示例
这些示例假定使用 HTTPS 进行克隆(建议这样做)。
$ git remote -v
# View current remotes
> 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
# Remove remote
$ git remote -v
# Verify it's gone
> 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'
检查您是否正确键入了远程仓库的名称。