美文网首页iOS
如何在多个 Git 平台玩转一个仓库

如何在多个 Git 平台玩转一个仓库

作者: liam_7 | 来源:发表于2024-05-21 00:18 被阅读0次

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

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

配置 SSH

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

检查现有 SSH 密钥

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

ls -al ~/.ssh

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

生成新 SSH 密钥

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

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

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

在这个命令中:

  • 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

在这个配置中:

  • 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 连接

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

> 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)?

输入 yes,然后按 Enter

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

添加成功后,就可以使用 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

已经有 Git 仓库

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

git clone <远程仓库URL>

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

查看远程仓库

添加之前,我们先查看一下本地 Git 仓库是否有远程仓库的链接,在终端执行以下命令:

git remote -v

如果刚才是本地新初始化的 Git 仓库,不会有任何信息打印。但是,刚才是从远程平台克隆下来的,就会有以下信息打印。比如,我们是从 Github 克隆的。

origin  git@github.com:liam-i/git-multi-platform-sync.git (fetch)
origin  git@github.com:liam-i/git-multi-platform-sync.git (push)

删除远程仓库

为了明确指向多平台远程仓库,所以我们用以下命令删除不直观的 origin,稍后再添加一个具有明确指向性的别名

git remote remove origin

添加远程仓库

为了将本地仓库与其他平台的远程仓库关联起来,需要执行以下命令为它们添加别名。

git remote add <别名> <远程仓库URL>

例如,你可以为 GitHub 仓库添加别名 github,为 GitLab 仓库添加别名 gitlab

git remote add github git@github.com:liam-i/git-multi-platform-sync.git
git remote add gitlab ssh://git@gitlab.com:liam-i/git-multi-platform-sync.git
git remote add gitee git@gitee.com:liam-i/git-multi-platform-sync.git

添加完成后,我们再用 git remote -v 命令查看一下:

$ git remote -v

github  git@github.com:liam-i/git-multi-platform-sync.git (fetch)
github  git@github.com:liam-i/git-multi-platform-sync.git (push)
gitlab  ssh://git@gitlab.com:liam-i/git-multi-platform-sync.git (fetch)
gitlab  ssh://git@gitlab.com:liam-i/git-multi-platform-sync.git (push)
gitee   git@gitee.com:liam-i/git-multi-platform-sync.git (fetch)
gitee   git@gitee.com:liam-i/git-multi-platform-sync.git (push)

同步操作

推送代码

当你对本地仓库进行了修改,并提交了新的更改后,可以使用以下命令将这些更改推送到所有远程平台:

git push <别名> <分支名>

例如,将更改推送到 GitHubGitLabGitee

git push github main
git push gitlab main
git push gitee main

拉取代码

如果你想从某个远程仓库拉取最新的更改到本地,可以使用以下命令:

git pull <别名> <分支名>

例如,从 GitHubGitLabGitee 拉取更改:

git pull github main
git pull gitlab main
git pull gitee main

注意:在拉取代码之前,请确保你在正确的分支上,并且本地仓库的工作目录是干净的。

管理与维护

为了保持多个平台上的仓库数据一致性,你需要定期进行同步操作。同时,当在多个平台上进行协作时,注意解决可能出现的冲突。要解决冲突可以使用 git merge 工具,并确保在推送更改之前测试代码的完整性。

关于更详细的 Git 操作指令请参考:

结语

看完这篇博客,你应该已经知道怎么在多个平台上玩转 Git 仓库同步了。同步时别忘了多留个心眼,还要时不时确认下各平台的数据是否都对得上。希望你用 Git 越来越 6!🤙🤙🤙

参考资料

访问博址 liam-i.github.io 获取更佳阅读体验和最新内容。

相关文章

  • Git多个远程仓库不同步时的补救办法

    git本地仓库是可以与多个远程仓库关联的,如果想知道怎么配置,请参考Git如何使用多个托管平台管理代码 。 当gi...

  • 一种 Android 多项目依赖同一个 Module 的方案

    问题 如何在多个项目之间引用同一个 module,并能够支持在同一个 git 仓库中维护该 module? 解决方...

  • git 远程分支错误删除后恢复

    情况说明:远程git仓库有多个分支,本地git仓库也有多个分支,某次不小心删除了远程的一个分支,然后 目标:想恢复...

  • git 多个仓库

    多个仓库,同时使用内容共享 但是发布的周期不同等 先添加远程 然后push 然后第二个计算机如何并存两个git...

  • git操作经验

    git如何在本地仓库关联远程仓库 本地建立项目 yi-fast,进入目录,初始化本地仓库git init 在git...

  • 一文带你玩转Git

    一文带你玩转Git Git基本操作 git的常见基本操作游走于远程仓库、本地仓库、暂存区、工作区.需要使用pull...

  • git 合并两个仓库代码

    git 同一行运行多个命令 用"&&" 来分隔多个命令 多个仓库代码之间进行代码合并 原理 git不区分不同仓库是...

  • 为一个 Git 仓库配置多个远程仓库

    个人实际应用 Git 时可能需要将一个本地仓库同步到多个远程仓库,比如将一个仓库同时同步到 Gitee 和 Git...

  • 搭建和使用pod私有库

    1.创建一个git仓库由于存储pod.spec文件 在git云平台创建一个空的git仓库,将该仓库添加到本地pod...

  • Git

    玩转Git三剑客 学习笔记 配置 user 信息 显示 config 的配置,加 --list 建 git 仓库 ...

网友评论

    本文标题:如何在多个 Git 平台玩转一个仓库

    本文链接:https://www.haomeiwen.com/subject/utnofjtx.html