考虑到github不能免费创建私有仓库原因,最近开始在使用码云托管项目,这样避免了连接数据库的用户密码等信息直接暴露在公共仓库中。今天突然想到一个点,就是能不能同时把代码推送到github和码云上呢?答案是可以的。

背景

首先,我们在开始一个项目时,在本地写了一些代码,需要同时托管到github和码云(gitee)上。这个时候我们要怎么办呢?请接着看。

实现方法

添加密钥对

在C:\Users\robin.ssh目录下运行git bash

// 这个是给github生成的
ssh-keygen -t rsa -C "1148121254@qq.com"
// 这个是给码云生成的
ssh-keygen -t rsa -C "cumtrobin@163.com"

生成后自行命名管理,这里不再赘述。接着把公钥分别放在github和码云上。私钥可以用config文件管理

# 配置github.com
Host github.com
HostName github.com
IdentityFile C:\\Users\\robin\\.ssh\\id_rsa_github
PreferredAuthentications publickey
User cumtRobin # 配置gitee.com
Host gitee.com
HostName gitee.com
IdentityFile C:\\Users\\robin\\.ssh\\id_rsa_gitee
PreferredAuthentications publickey
User Tusi

接着我们测试一下

ssh -T git@github.com
ssh -T git@gitee.com

成功则会得到这样的反馈

创建仓库

首先是在github和码云上分别创建一个仓库。这个玩过github的都知道,不细说。

接着在本地项目根目录创建git仓库

git init

本地与remote关联

要把两个remote仓库与本地git仓库关联起来,我们直接来运行

// 添加github的远程库
git remote add origin git@github.com:cumtRobin/BlogFrontEnd.git
// 添加码云的远程库
git remote add gitee git@gitee.com:tusi/BlogFrontEnd.git

然后我们运行git remote查看添加的远程库列表

git remote
// 得到以下值
origin
gitee

说明已经添加成功,接着我们分别查看git status,会看到本地有很多文件待提交,接着git add, git commit,最后git push的时候要注意分开push

// push到github主分支
git push origin master
// push到gitee主分支
git push gitee master

虽然麻烦了一点,需要push两次,但是目的是初步达成了。如果想要一次性push解决,那也不是没有办法。

一次性push

为了避免引起歧义,这里先将origin,gitee的remote库删除

git remote rm origin
git remote rm gitee

重新添加remote

git remote add all git@github.com:cumtRobin/BlogFrontEnd.git

可以看到,我其实是添加的github的远程库,只不过把它的名字叫做all。接着我们把码云上的remote库也关联起来。

git remote set-url --add all git@gitee.com:tusi/BlogFrontEnd.git

这样操作以后,就可以运行一条push命令了

git push all --all

有人说可以改.git/config文件实现。其实刚才上面的命令修改的就是config文件,但是本人建议,多练练命令行,这样也会加深对git的理解。这时候我们再查看一下.git/config文件。可以看到remote all下面是有两个url的。

[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[remote "all"]
url = git@github.com:cumtRobin/BlogFrontEnd.git
url = git@gitee.com:tusi/BlogFrontEnd.git

学会了两个托管平台的配置,那使用更多的托管平台也就不难实现了。

ps:再分享一个小技巧,由于我在生成ssh密钥时,加了passphrase,导致我每次push都要输入密码,很烦人。

其实,只要重置一下这个passphrase就可以了。

// 进入到.ssh目录,运行git bash

ssh-keygen -p

// 再输入密钥名,如id_rsa_github,先输入旧密码,然后一路回车即可,多个密钥重复此操作即可。


2019-04-18

  1. 补充 git pull 的细节

因为都是从本地 push 代码到远程仓库,很久没有从远程仓库拉取代码了,今天不小心在 github 上改了仓库中的 readme 文件,导致和 gitee 不同步。使用 git pull 报错,慌的一批。

$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details. git pull <remote> <branch> If you wish to set tracking information for this branch you can do so with: git branch --set-upstream-to=all/<branch> master

原来是要使用下面这条命令才行。

$ git pull all master
From github.com:cumtRobin/BlogFrontEnd
* branch master -> FETCH_HEAD
Already up to date.

上面的 all 是指 remote ,即远程仓库,master 是指分支名,master 即主干分支。

干货!Git 如何使用多个托管平台管理代码的更多相关文章

  1. git几个必知托管平台

      程序员必须知道的几个Git代码托管平台 说到Git代码托管平台,首先推荐的是GitHub,好多好的开源项目都来自GitHub,但是GitHub只能新建公开的Git仓库,私有 仓库要收费,如果你做的 ...

  2. Git系列①之仓库管理互联网托管平台github.com的使用

    互联网项目托管平台github.com的使用 1.安装git客户端 # yum install -y git 配置git全局用户以及邮箱 [root@web01 ~]# git config --gl ...

  3. 如何导入外部Git仓库到中国源代码托管平台(Git@OSC)

    git clone --bare http://git.rcrtm.com/git/dianli.git git clone --mirror https://git.oschina.net/cand ...

  4. 程序员Git代码托管平台

    程序员Git代码托管平台 说到Git代码托管平台,首先推荐的是GitHub,好多好的开源项目都来自GitHub,但是GitHub只能新建公开的Git仓库,私有 仓库要收费,如果你做的是一个开源项目,可 ...

  5. Git学习总结(3)——代码托管平台简介

    可以说GitHub的出现完全颠覆了以往大家对代码托管网站的认识.GitHub不但是一个代码托管网站,更是一个程序员的SNS社区.GitHub真正迷人的是它的创新能力与Geek精神,这些都是无法模仿的. ...

  6. 探讨 Git 代码托管平台的若干问题

    关于 Git 版本控制软件种类繁多,维基百科收录的最早的版本控制系统是 1972 年贝尔实验室开发的 Source Code Control System.1986 年 Concurrent Vers ...

  7. 探讨 Git 代码托管平台的若干问题 - 2019 版

    关于 Git 版本控制软件种类繁多,维基百科收录的最早的版本控制系统是 1972 年贝尔实验室开发的 Source Code Control System.1986 年 Concurrent Vers ...

  8. Coding.net代码托管平台建立WordPress

    Coding.net这是一个国内新兴的代码托管平台,功能主要包括:代码托管.在线运行环境.监控代码质量,兼有一定的社交功能,在线运行环境支持Java.Ruby.Node.js.PHP.Python.G ...

  9. 软件工程 Coding.net代码托管平台 Git初学者的使用总结 五步完成 程序,文件,文件夹的Git

    一.前言 第一次用git相关的命令行,我使用的是Coding.net代码托管平台.Coding.net 自主打造的基于 Git 的代码托管平台,提供高性能的远端仓库,还有保护分支,历史版本分屏对比. ...

随机推荐

  1. wpf控件设计时支持(2)

    原文:wpf控件设计时支持(2) 这篇介绍在wpf设计时集合项属性添加项的定义和自定义控件右键菜单的方法 集合项属性设计时支持 1.为集合属性设计器识别具体项类型 wpf设计器允许定义集合项的类型,如 ...

  2. C# WPF 低仿网易云音乐(PC)Banner动画控件

    原文:C# WPF 低仿网易云音乐(PC)Banner动画控件 由于技术有限没能做到一模一样的动画,只是粗略地做了一下.动画有点生硬,还有就是没做出网易云音乐的立体感.代码非常简单粗暴,而且我也写有很 ...

  3. Windows下Apache+MySQL+PHP快速配置的几种方法

    Apache MySQL PHP Windows WAMP 1.易思EasySiteServer服务器集成环境 v1.0  (推荐) 尔创互联为推广其ESPCMS而开发的一个小东东,很好用.零配置,完 ...

  4. Blend_Effect

    原文:Blend_Effect 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010265681/article/details/76651796 ...

  5. [Swift]UIAlertController 以及 Swift 中的闭包和枚举

    原文地址:http://blog.callmewhy.com/2014/10/08/uialertcontroller-swift-closures-enum/ 在 iOS8 的 SDK 中, UIK ...

  6. sdut 5-1 继承和派生

    5-1 继承与派生 Time Limit: 1000MS Memory limit: 65536K 题目描写叙述 通过本题目的练习能够掌握继承与派生的概念.派生类的定义和用法.当中派生类构造函数的定义 ...

  7. 【代码备忘录】VC设置您的计算机环境变量、注册表操作

    欢迎增加C/C++ QQ组,无论你的工作.学生,只有具备c / vc / c++ 编程经验.就来吧!158427611 [设置电脑环境变量] 设置电脑环境变量非常easy,由于window而言.环境变 ...

  8. WPF中类似使用tab键功能,可以向上向下定位

    原文:WPF中类似使用tab键功能,可以向上向下定位 private void tbYyrs_KeyUp(object sender, KeyEventArgs e) { UIElement elem ...

  9. C# 桌面软件开发-深入学习[2]- AY-C#人爱学不学-aaronyang技术分享

    原文:C# 桌面软件开发-深入学习[2]- AY-C#人爱学不学-aaronyang技术分享 1 : C# Assembly.GetEntryAssembly().GetName().Version. ...

  10. wcf 代理实例

    通过过代理调用 wcf服务 using Microsoft.Extensions.Options; using System; using System.Collections.Generic; us ...