如何检查 Git 远程仓库是否配置了 SSH

GitGitBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何检查 Git 远程仓库是否使用 SSH 协议进行配置。我们将首先使用 git remote -v 命令来查看你仓库中已配置的远程 URL。

接下来,你将学习如何识别远程 URL 中的 SSH 协议格式。最后,我们将简要介绍使用 HTTPS 和 SSH 连接到远程仓库的区别。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/CollaborationandSharingGroup(["Collaboration and Sharing"]) git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git/BasicOperationsGroup -.-> git/add("Stage Files") git/CollaborationandSharingGroup -.-> git/remote("Manage Remotes") subgraph Lab Skills git/add -.-> lab-560077{{"如何检查 Git 远程仓库是否配置了 SSH"}} git/remote -.-> lab-560077{{"如何检查 Git 远程仓库是否配置了 SSH"}} end

运行 git remote -v 检查 URL

在这一步,你将学习如何检查与你的 Git 仓库关联的远程 URL。在 Git 中,“远程仓库(remote)”本质上是指向你的仓库另一个版本的链接,通常托管在 GitHub、GitLab 或 Bitbucket 等平台上。当你克隆一个仓库时,Git 会自动设置一个名为 origin 的远程仓库,指向原始仓库的 URL。

要查看当前仓库配置了哪些远程 URL,你可以使用 git remote -v 命令。-v 标志代表“详细(verbose)”,这意味着它将显示用于拉取(下载更改)和推送(上传更改)的 URL。

首先,确保你位于正确的目录中。导航到你的项目目录:

cd ~/project/my-time-machine

现在,运行命令来检查远程 URL:

git remote -v

由于这是一个尚未链接到远程仓库的新仓库,你不会看到任何输出。这是正常的!这仅仅意味着你的本地仓库目前是独立的,没有连接到任何外部仓库。

理解远程仓库对于协作和备份你的工作至关重要。当你与他人合作或使用 GitHub 等平台时,你将经常与远程仓库进行交互。git remote -v 命令是你检查本地仓库连接位置的方法。

在接下来的步骤中,我们将探讨如何添加远程仓库以及 URL 格式可能存在的差异。

验证 URL 中的 SSH 协议

在上一步中,我们发现我们的仓库还没有配置任何远程仓库。现在,让我们添加一个远程仓库,并特别关注 SSH 协议的 URL 格式。

SSH(安全外壳协议,Secure Shell)是一种网络协议,它提供了一种在不安全网络上安全访问计算机的方式。在 Git 的上下文中,使用 SSH 可以让你安全地连接到远程仓库,而无需在每次与仓库交互时都输入用户名和密码(在使用 SSH 密钥进行初始设置之后)。

Git 仓库的 SSH URL 通常如下所示:git@hostname:username/repository.git。例如,GitHub 上的一个仓库可能有一个类似 [email protected]:octocat/Spoon-Knife.git 的 SSH URL。

让我们使用一个假设的 SSH URL 为我们的 my-time-machine 仓库添加一个远程仓库。我们将这个远程仓库命名为 origin,这是主要远程仓库的惯用名称。

确保你位于 ~/project/my-time-machine 目录中:

cd ~/project/my-time-machine

现在,使用 git remote add 命令添加远程仓库:

git remote add origin [email protected]:yourusername/my-time-machine.git

yourusername 替换为占位符,因为这只是为了演示 URL 格式。此命令添加了一个名为 origin 的远程仓库,指向指定的 SSH URL。如果成功,它不会产生任何输出。

现在,让我们再次使用 git remote -v 来查看已配置的远程仓库:

git remote -v

你现在应该会看到类似于以下的输出:

origin  [email protected]:yourusername/my-time-machine.git (fetch)
origin  [email protected]:yourusername/my-time-machine.git (push)

注意 URL 格式:[email protected]:yourusername/my-time-machine.git。这就是 SSH 协议的格式。它以 git@ 开头,后面跟着主机名(github.com)、一个冒号 :,然后是仓库的路径(yourusername/my-time-machine.git)。

理解 SSH URL 格式很重要,因为它是与远程 Git 仓库进行交互的常用方式,尤其是在你需要推送更改时。与反复输入凭证相比,它提供了一种更安全、更便捷的方法。

测试 HTTPS 与 SSH

在上一步中,我们使用 SSH 协议添加了一个远程仓库。另一种与 Git 远程仓库交互的常用协议是 HTTPS。让我们来探究一下它们的区别以及 URL 的样子。

HTTPS(超文本传输安全协议,Hypertext Transfer Protocol Secure)是互联网上进行安全通信的标准协议。当你在 Git 中使用 HTTPS 时,通常使用用户名和密码或个人访问令牌进行身份验证。Git 仓库的 HTTPS URL 通常以 https:// 开头。例如,同一个假设的 GitHub 仓库的 HTTPS URL 会是 https://github.com/yourusername/my-time-machine.git

SSH 和 HTTPS 都有各自的优势。HTTPS 通常在初始设置时更容易,因为它不需要生成和配置 SSH 密钥。然而,对于像推送更改这样的频繁交互,SSH 可能更方便,因为在初始设置后不需要重复进行身份验证。

让我们移除之前添加的 SSH 远程仓库,改为添加一个 HTTPS 远程仓库,看看 git remote -v 输出的差异。

首先,确保你位于 ~/project/my-time-machine 目录中:

cd ~/project/my-time-machine

现在,使用 git remote remove 命令移除现有的 origin 远程仓库:

git remote remove origin

此命令会移除名为 origin 的远程仓库。如果成功,它不会产生任何输出。

让我们验证一下远程仓库是否已被移除:

git remote -v

你应该看不到任何输出,这证实了 origin 远程仓库已被移除。

现在,让我们将同一个假设的仓库作为远程仓库添加,但这次使用 HTTPS URL:

git remote add origin https://github.com/yourusername/my-time-machine.git

同样,将 yourusername 替换为占位符。此命令会添加一个名为 origin 的远程仓库,指向指定的 HTTPS URL。

最后,让我们再次使用 git remote -v 检查远程仓库:

git remote -v

你现在应该会看到类似于以下的输出:

origin  https://github.com/yourusername/my-time-machine.git (fetch)
origin  https://github.com/yourusername/my-time-machine.git (push)

注意现在的 URL 格式以 https:// 开头。这就是 Git 远程仓库中 HTTPS 和 SSH 协议在 URL 结构上的关键区别。

在实际场景中,你会根据自己的偏好和所使用的 Git 托管平台的要求来选择 SSH 或 HTTPS。这两种协议都得到了广泛支持。

你现在已经成功添加和移除了远程仓库,并观察到了 SSH 和 HTTPS URL 格式的差异。这种理解在处理远程仓库时是非常基础的。

总结

在本次实验中,我们学习了如何使用 git remote -v 命令检查为 Git 仓库配置的远程 URL。该命令会显示每个已配置远程仓库的获取(fetch)和推送(push)URL,这些 URL 指向你仓库的其他版本,通常托管在像 GitHub 这样的平台上。我们了解到,没有配置远程仓库的新仓库在执行此命令时不会有任何输出。

接着,我们探究了用于 Git 远程仓库的 SSH 协议,认识到它提供了一种安全的方式来与远程仓库进行交互,在使用 SSH 密钥完成初始设置后,无需反复输入凭证。我们学会了识别 SSH URL 格式,它与 HTTPS URL 不同,还学会了通过查看 git remote -v 的输出,来验证远程仓库是否配置为使用 SSH。