Git如何玩转多个远端仓库

简介: 实际开发过程中,我们有时候会遇到一个本地仓库关联着多个远端仓库的情况。那么,我们应该如何游刃有余的在两个仓库之间切换和同步代码呢?不熟悉的小伙伴,面对这个问题,一定满脸都是问号?今天,这篇文章就来给大家科普一波儿。

前言

实际开发过程中,我们有时候会遇到一个本地仓库关联着多个远端仓库的情况。那么,我们应该如何游刃有余的在两个仓库之间切换和同步代码呢?不熟悉的小伙伴,面对这个问题,一定满脸都是问号?今天,这篇文章就来给大家科普一波儿。

正文

一般情况下,我们在 GitHub 上新建一个仓库后,GitHub 会给出三种常规操作的示例方法。告诉如何把本地的一个项目关联到 GitHub 的仓库上。

这里简单说一下都有哪三种情况。

情况一、本地还有工程目录

这种情况比较简单,我们只需要同步云端仓库,本地就会自动创建工程目录,操作方法和命令如下:

git clone git@git.lozen.com:LLL/gloud/bominio.git
cd bominio
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

情况二、本地已经存在工程目录

这种情况,我们需要进入对应的工程目录,先执行git init 命令,操作方法和命令如下:

cd existing_folder
git init
git remote add origin git@git.lozen.com:LLL/gloud/bominio.git
git add .
git commit -m "Initial commit"
git push -u origin master

情况三、本地已经存在工程目录且已经关联其他仓库

这种情况,就是我们今天要讨论的内容。主要的难点在于定义远端仓库的名字和仓库切换,先说一下操作方法和命令如下:

cd existing_repo
git remote rename origin old-origin
git remote add origin git@git.lozen.com:LLL/gloud/bominio.git
git push -u origin --all
git push -u origin --tags

当我们把仓库弄混之后,很容易会错误的把该属于A仓库的代码推到B仓库上,从而导致错误,常见的错误如下:

fatal: unable to access 'github.com/minio/minio…': LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443

想解决这种情况,就需要我们把远程仓库的管理搞明白。下面通过一个实例,来介绍如果修改远程仓库的名字。我们可以通过命令git remote -v 查看当前仓库的所有关联的远程仓库地址,比如:

localhost:bominio lz$ git remote -v

borigin git@git.lozen.com:LLL/gloud/bominio.git (fetch)

borigin git@git.lozen.com:LLL/gloud/bominio.git (push)

origin github.com/minio/minio… (fetch)

origin github.com/minio/minio… (push)

通过上面的输出结果,我们可以知道 bominio 仓库关联了两个远程仓库,分别是 borigin 和 origin。此时,如果我们想把自己的仓库名 borigin 改成 origin 的话,需要怎么操作呢?说到这里,我突然想到了超级简单的笔试题:写一个算法,交换变量a和变量b的值。是的,原理差不多!我们需要先把占着 origin 名字的仓库改成别的名字,再把我们自己的仓库改成 origin 。具体的操作如下:

// 先把 origin 名字的仓库改成别的名字

localhost:bominio lz$ git remote rename origin old-origin

localhost:bominio lz$ git remote -v

borigin git@git.lezon.com:LLL/gloud/bominio.git (fetch)

borigin git@git.lezon.com:LLL/gloud/bominio.git (push)

old-origin github.com/minio/minio… (fetch)

old-origin github.com/minio/minio… (push)

修改自己仓库的名字,命令如下:

localhost:bominio lz$ git remote rename borigin origin

此时,再查看两个远程仓库的名字,我们发现已经OK啦。

localhost:bominio lz$ git remote -v

old-origin github.com/minio/minio… (fetch)

old-origin github.com/minio/minio… (push)

origin git@git.lozen.com:LLL/gloud/bominio.git (fetch)

origin git@git.lozen.com:LLL/gloud/bominio.git (push)

改名字的问题已经搞定啦,接下来再说同步代码的事情。既然我们已经可以通过名字来区分不同的远程仓库,那么在同步代码的时候,就需要为每一条命令指明仓库对象。比如,平时我们同步代码只需要执行git pull,就可以把远端仓库代码同步到本地,但是当存在多个远程仓库时,就需要执行git pull origin

结尾

好了,关于使用 Git 玩转多个远程仓库的内容就介绍完了。其实,很多问题都是这样,不是有多难,只是你不知道而已。感兴趣的小伙伴,赶紧动手尝试吧!我是 liuzhen007(别名:Data-Mining),欢迎评论留言+一键三连。



作者简介:😄大家好,我是 Data-Mining(liuzhen007),是一位典型的音视频技术爱好者,前后就职于传统广电巨头和音视频互联网公司,具有丰富的音视频直播和点播相关经验,对 WebRTC、FFmpeg 和 Electron 有非常深入的了解,😄公众号:玩转音视频。同时也是 CSDN 博客专家、华为云享专家(共创编辑)、InfoQ 签约作者,欢迎关注我分享更多干货!😄

目录
相关文章
|
2月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之如何将个人账号下的Git仓库转移到企业账号下
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
2月前
|
IDE 网络安全 开发工具
【Azure App Service】Local Git App Service的仓库代码遇见卡住不Clone代码的问题
【Azure App Service】Local Git App Service的仓库代码遇见卡住不Clone代码的问题
【Azure App Service】Local Git App Service的仓库代码遇见卡住不Clone代码的问题
|
2天前
|
存储 开发工具 git
Git 远程仓库地址管理:添加、修改和验证
Git 远程仓库地址管理:添加、修改和验证
10 4
|
2天前
|
编译器 开发工具 数据安全/隐私保护
Git——多人协作/版本控制,在一个gitee仓库下开发(Gitee版教程)手把手教学,包好用的!
本文提供了一个关于如何在Gitee上进行多人协作和版本控制的详细教程,包括新建和初始化仓库、克隆仓库、邀请好友共同管理仓库以及注意事项,旨在帮助用户顺利进行代码协作开发。
15 0
Git——多人协作/版本控制,在一个gitee仓库下开发(Gitee版教程)手把手教学,包好用的!
|
12天前
|
开发工具 git
IDEA更改远程git仓库地址
【9月更文挑战第27天】本文介绍了两种在IntelliJ IDEA中更改远程Git仓库地址的方法:一是通过图形界面,在VCS设置中直接修改;二是通过IDEA内置的命令行工具使用`git`命令进行更改。具体步骤包括从版本控制菜单进入项目设置、修改远程仓库URL,以及使用`git remote set-url`命令更新仓库地址,并验证修改结果。这些方法适用于项目迁移或更换仓库地址的情况。
|
14天前
|
Linux 开发工具 git
linux自建仓库git之钩子不生效
linux自建仓库git之钩子不生效
|
14天前
|
Shell 网络安全 开发工具
git与gitee结合使用,提交代码,文件到远程仓库
本文介绍了如何将Git与Gitee结合使用来提交代码文件到远程仓库。内容涵盖了Git的安装和环境变量配置、SSH公钥的生成和配置、在Gitee上创建仓库、设置Git的全局用户信息、初始化本地仓库、添加远程仓库地址、提交文件和推送到远程仓库的步骤。此外,还提供了如何克隆远程仓库到本地的命令。
git与gitee结合使用,提交代码,文件到远程仓库
|
1天前
|
前端开发 开发工具 git
搭建Registry&Harbor私有仓库、Dockerfile(八)+前端一些好学好用的代码规范-git hook+husky + commitlint
搭建Registry&Harbor私有仓库、Dockerfile(八)+前端一些好学好用的代码规范-git hook+husky + commitlint
11 0
|
13天前
|
网络安全 开发工具 git
6-23|自建仓库如何免密执行git pull
6-23|自建仓库如何免密执行git pull
|
2月前
|
缓存 开发工具 git
给Git仓库添加.gitignore:清理、删除、排除被Git误添加的临时文件
本文介绍了如何为Git仓库添加`.gitignore`文件来排除不需要跟踪的临时文件,并展示了如何删除已经被提交的临时文件缓存,以清理Git仓库中的不必要文件。
123 0
给Git仓库添加.gitignore:清理、删除、排除被Git误添加的临时文件