Git如何玩转多个远端仓库

举报
liuzhen007 发表于 2021/08/31 19:55:26 2021/08/31
【摘要】 目录前言正文情况一、本地没有工程目录情况二、本地已经存在工程目录情况三、本地已经存在工程目录且已经关联其他仓库结尾 前言实际开发过程中,我们有时候会遇到一个本地仓库关联着多个远端仓库的情况。那么,我们应该如何游刃有余的在两个仓库之间切换和同步代码呢?不熟悉的小伙伴,面对这个问题,一定满脸都是问号?今天,这篇文章就来给大家科普一波儿。 正文一般情况下,我们在 GitHub 上新建一个仓库后,G...

目录

  • 前言
  • 正文
    • 情况一、本地没有工程目录
    • 情况二、本地已经存在工程目录
    • 情况三、本地已经存在工程目录且已经关联其他仓库
  • 结尾

前言

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

正文

一般情况下,我们在 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 ‘https://github.com/minio/minio.git/’: 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 https://github.com/minio/minio.git (fetch)

origin https://github.com/minio/minio.git (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 https://github.com/minio/minio.git (fetch)

old-origin https://github.com/minio/minio.git (push)

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

localhost:bominio lz$ git remote rename borigin origin

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

localhost:bominio lz$ git remote -v

old-origin https://github.com/minio/minio.git (fetch)

old-origin https://github.com/minio/minio.git (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),欢迎评论留言+一键三连。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。