当前位置:   article > 正文

如何在多个 Git 平台玩转一个仓库_通过一个git账号可以在不同服务器管理同一个仓库吗

通过一个git账号可以在不同服务器管理同一个仓库吗


版本控制在软件开发中至关重要,而 Git 是广泛使用的代码管理工具。有时,我们可能需要在多个平台 (如 GitHubGitLabGitee) 上同步同一 Git 仓库,以便备份、协作等。

本文将带你玩转此操作,其中关键是“配置 SSH” 和“远程仓库”。首先,我们来讲述 SSH 的配置。

配置 SSH

为确保安全和简化登录,需配置 SSH 密钥。SSH 密钥是用于身份验证的安全方式,可免密访问远程 Git 仓库。

检查现有 SSH 密钥

在生成新的 SSH 密钥之前,应该检查本地电脑是否存在现有密钥。打开终端,输入一下命令以查看是否存在现有的 SSH 密钥。

ls -al ~/.ssh
  • 1

此命令将列出 .ssh 目录中的所有文件(如果存在)。如果没有想要的,需要创建新的 SSH 密钥对。

生成新 SSH 密钥

在本地电脑上生成新的 SSH 密钥。 生成密钥后,可将公钥添加到 GitHub 等平台上的帐户中,以便通过 SSH 为 Git 操作启用身份验证。

打开终端输入一下命令,然后一路 Enter 键,完成密钥对的生成:

ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/id_github
  • 1

在这个命令中:

  • ssh-keygen 用于生成、管理和转换认证密钥的工具。
  • -t 指定了密钥类型。ed25519 是一种现代的、安全的公钥加密算法,被广泛认为是非常强大且高效的。与 RSA 和 DSA 密钥相比,它提供了更好的安全性和性能。
  • -C 指定一个注释,通常是用户的电子邮件地址。
  • -f 指定了密钥文件的保存位置和名称。默认情况下,ssh-keygen 会生成名为 id_rsaid_ed25519 等的文件,具体取决于所选的密钥类型。在这里,它将被保存为 ~/.ssh/id_github (私钥) 和 ~/.ssh/id_github.pub (公钥)。

相关链接:

编辑 ~/.ssh/config 文件

为了在一台电脑上配置多个平台的 SSH,你需要编辑 ~/.ssh/config 文件。以下是一个配置示例,分别配置了 GitHubGitLabGitee 的 SSH:

# GitHub 配置
Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_github
    PreferredAuthentications publickey,password  # 优先使用 SSH 公钥认证,然后再尝试用户名和密码认证
    IdentitiesOnly yes

# GitLab 配置
Host gitlab.com
    HostName gitlab.com
    User git
    IdentityFile ~/.ssh/id_gitlab
    PreferredAuthentications publickey  # 仅使用 SSH 公钥认证
    IdentitiesOnly yes

# Gitee 配置
Host gitee.com
    HostName gitee.com
    User git
    IdentityFile ~/.ssh/id_gitee
    PreferredAuthentications publickey  # 仅使用 SSH 公钥认证
    IdentitiesOnly yes
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

在这个配置中:

  • Host 是你定义的别名,可以随意命名,但通常使用服务域名以方便记忆。
  • HostName 是实际的服务域名。
  • User 通常是 git,因为这是大多数 Git 服务器的默认用户名。
  • IdentityFile 指向你的私钥文件路径。
  • PreferredAuthentications 指定 SSH 客户端在尝试身份验证时应优先考虑的认证方法列表。例如,你可以设置为只使用公钥认证,或者优先使用公钥认证,然后再尝试其他 (密码) 认证方式。
  • IdentitiesOnly yes 指示 SSH 只使用 IdentityFile 指定的身份进行认证,这有助于避免 SSH 代理或默认私钥的干扰。

新增 SSH 密钥到平台帐户

配置 ~/.ssh/config 文件完毕后,必须将 SSH 公钥添加到 GitHubGitLabGitee,才能为帐户启用 SSH 访问。

相关链接:

测试 SSH 连接

设置 SSH 密钥并将其添加到 GitHubGitLabGitee 后,可以测试连接。

测试 SSH 连接之前,应已完成以上所有步骤。

打开终端,输入以下命令:

ssh -T git@github.com          # 测试 Github 的 SSH 连接

ssh -T git@gitlab.example.com  # 测试 Gitlab 的 SSH 连接。注意:要将 gitlab.example.com 替换为你的实例 URL

ssh -T git@gitee.com           # 测试 Gitee 的 SSH 连接
  • 1
  • 2
  • 3
  • 4
  • 5

如果这是你第一次连接,你应该会看到类似以下消息,提示你需要验证平台主机的真实性:

> The authenticity of host ' (IP ADDRESS)' can't be established.
> ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
> Are you sure you want to continue connecting (yes/no)?
  • 1
  • 2
  • 3

输入 yes,然后按 Enter

> Hi USERNAME! You've successfully authenticated, but GitHub does not
> provide shell access.
  • 1
  • 2

添加成功后,就可以使用 SSH 协议访问这些平台了。例如,你可以使用 git clone git@github.com/username/repository.git 来克隆 GitHub 上的仓库,SSH 会根据 ~/.ssh/config 文件中的配置来选择合适的私钥进行身份验证。

相关链接:

我们为电脑配置完 SSH 后,接下来为本地 Git 仓库添加多个远程平台的仓库链接。

配置远程仓库

没有 Git 仓库

为 Git 仓库添加多个远程平台的仓库的前提是得有个本地 Git 仓库。如果你还没有,可以用以下命令初始化一个。

cd your_folder
git init --initial-branch=main
  • 1
  • 2

已经有 Git 仓库

如果你已经在其中一个平台上有个 Git 仓库,你可以使用以下命令将其克隆到本地。

git clone <远程仓库URL>
  • 1

然后,cd 到新初始化、或者克隆下来的仓库目录,添加其他平台的远程仓库链接

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/989382
推荐阅读
相关标签