精华内容
参与话题
问答
  • 同时使用GitHub和GitLab

    2019-08-14 20:38:37
    由于公司团队使用 GitLab 来托管代码,同时,个人在 Github 上还有一些代码仓库,可公司邮箱与个人邮箱是不同的,由此产生的 SSH key 也是不同的,这就造成了冲突 ,如何在一台机器上面同时使用 GithubGitlab 的...

    由于公司团队使用 GitLab 来托管代码,同时,个人在 Github 上还有一些代码仓库,可公司邮箱与个人邮箱是不同的,由此产生的 SSH key 也是不同的,这就造成了冲突 ,如何在一台机器上面同时使用 Github 与 Gitlab 的服务?
    问题产生场景
    无密码与远程服务器交互的秘密 - SSH
    如果采用ssh 协议或者git 协议通过终端命令对远程仓库进行``push```操作的时候,大概的过程如下:(前提在 Github 上已经配置的本机的 SSH Public Key)

    客户端发起一个 Public Key 的认证请求,并发送RSA Key的模数作为标识符。(关于 RSA Key 详细 维基百科)
    服务端检查是否存在请求帐号的公钥(Linux中存储在~/.ssh/authorized_keys文件中),以及其拥有的访问权限。
    服务端使用对应的公钥对一个随机的256位的字符串进行加密,并发送给客户端。
    客户端使用私钥对字符串进行解密,并将其结合session id生成一个MD5值发送给服务端。 结合session id的目的是为了避免攻击者采用重放攻击(replay attack)。
    服务端采用同样的方式生成MD5值与客户端返回的MD5值进行比较,完成对客户端的认证。
    将push的内容进行加密与服务端传输数据。
    关于 SSH,请查看 SSH原理简介 ,更通俗易懂的文章请查看阮一峰-SSH原理与运用(一):远程登录 。

    具体场景
    无论使用哪种代码托管服务商,对于 Git 而言,邮箱是识别用户的唯一手段,所以对于不同的服务商,由于邮箱不同,那么通过邮件名创建的 SSH Key 自然是不同的,这时候在不同的服务商之间进行push命令的时候,Git 是不知道使用哪个 SSH Key ,自然导致 push 的失败。场景如下:

    在公司团队使用搭建的 Gitlab 服务,提交邮箱w_zhangguanjun@xx.com.cn, 个人 Github 服务,提交邮箱 championzhang007@gmail.com
    有两个Github账户,不同的账户提交不同的仓库内容。

    解决方案
    方案一:同一个邮箱
    由于邮箱是识别的唯一手段,那么自然的,这两者采用同一个邮箱,生成的 public key 也会是同一个,上传到 Github 或者 Gitlab 上面,在 Git 的配置中 ,设置好 Global 的配置 :git config --global user.name ‘ciqing’ && git config --global user.email ‘w_zhangguanjun@xx.com.cn’ 进行日常的开发是没有问题的。
    实际生活中采用同一个邮箱的可能性并不是太大,这就引出了方案二
    方案二:基于config文件
    所谓的方案二,原理上就是对 SSH 协议配置 config 文件,对不同的域名采用不同的认证密钥。
    git config 介绍
    Git有一个工具被称为git config,它允许你获得和设置配置变量;这些变量可以控制Git的外观和操作的各个方面。这些变量可以被存储在三个不同的位置:

    /etc/gitconfig 文件:包含了适用于系统所有用户和所有库的值。如果你传递参数选项’–system’给 git config,它将明确的读和写这个文件。
    ~/.gitconfig 文件 :具体到你的用户。你可以通过传递 ‘–global’ 选项使Git 读或写这个特定的文件。
    位于 Git 目录的 config 文件 (也就是 .git/config) :无论你当前在用的库是什么,特定指向该单一的库。每个级别重写前一个级别的值。因此,在 .git/config 中的值覆盖了在/etc/gitconfig中的同一个值,可以通过传递‘–local’选项使Git 读或写这个特定的文件。
    由于采用了不同的邮箱,对不同的服务商进行提交,所以此时我们经常配置的git config --global就不能常用了,必须在每个仓库的目录下进行配置自己的用户名、邮箱。(嫌麻烦?那么可以这么解决,由于个人的 Github 上有较多的仓库,而自己团队的代码基本上都是稳定的,有数的几个,所以在git config --global user.email ‘championzhang007@gmail.com’ 中全局配置的是个人邮箱,在团队的项目单独配置邮箱)

    配置流程

    1. 配置 Git 用户名、邮箱

    全局配置,Github仓库中默认使用此配置

    git config --global user.name ‘ciqing’ && git config --global user.email ‘championzhang007@gmail.com’

    团队项目配置,每次新创建一个项目,需要执行下

    git config --local user.name ‘zhangguanjun’ && git config --local user.email ‘w_zhangguanjun@xx.com.cn’

    2.生成 ssh key 上传到 Github/Gitlab
    ssh key 默认生成后保存在 ~/.ssh/目录下 ,默认为 id_rsa 和 id_rsa.pub 两个文件,由于我们需要分开配置,所以这么做:

    生成公钥、密钥的同时指定文件名,Gitlab使用

    ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitlab -C "w_zhangguanjun@xx.com.cn"

    生成默认,Github使用

    ssh-keygen -t rsa -C "championzhang007@gmail.com"

    命令执行完成后,这时~/.ssh目录下会多出id_rsa.gitlab和id_rsa.gitlab.pub两个文件,id_rsa.gitlab.pub里保存的就是我们要使用的key,这个key就是用来上传到 Gitlab上的。
    3.配置 config 文件
    在 ~/.ssh目录下,如果不存在,则新建 touch ~/.ssh/config文件 ,文件内容添加如下:
    Host *intra.xxx.com
    IdentityFile ~/.ssh/id_rsa.gitlab
    User zhangguanjun

    配置完成后,符合 intra.xxx.com后缀的 Git 仓库,均采取~/.ssh/id_rsa.gitlab 密钥进行验证,其它的采取默认的。
    4.上传public key 到 Github/Gitlab
    以Github为例,过程如下:
    登录github
    点击右上方的Accounting settings图标
    选择 SSH key
    点击 Add SSH key
    在出现的界面中填写SSH key的名称,填一个你自己喜欢的名称即可,然后将上面拷贝的~/.ssh/id_rsa.pub文件内容粘帖到key一栏,在点击“add key”按钮就可以了。
    添加过程github会提示你输入一次你的github密码 ,确认后即添加完毕。 上传Gitlab的过程一样,请自己操作。
    5.验证是否OK
    由于每个托管商的仓库都有唯一的后缀,比如 Github的是 git@github.com?,所以可以这样测试:
    ➜ ~ ssh -T git@github.com
    Hi ciqing! You’ve successfully authenticated, but GitHub does not provide shell access.
    ➜ ~ ssh -T git@gitlab.dev
    Welcome to GitLab, zhangguanjun!

    看到这些Welcome 信息,说明就是 OK的了。

    展开全文
  • 先说一下写这篇博客的缘由,之前自己开发项目的时候都是用 gitHub 来托管代码,但是实习之后由于公司项目隐私问题,给分配了 GitLab 的用户名邮箱,当时我就直接在电脑上把用户名密码进行了全局配置,自那以后我...

    1、git 出现提交被拒问题

    先说一下写这篇博客的缘由,之前自己开发项目的时候都是用 gitHub 来托管代码,但是实习之后由于公司项目隐私问题,给分配了 GitLab 的用户名和邮箱,当时我就直接在电脑上把用户名和密码进行了全局配置,自那以后我在实习之余做自己的项目时,每次往 gitHub 上提交代码都没有我的 contributions 记录(不会出现那个小绿点了),当时我以为网卡没在意。

    今天春节在家远程办公的时候,突然出现 GitLab 提交代码被拒的问题:Push to origin/master was rejected,可能是新建了个项目并提交代码到 gitHub 上时让输入 gitHub 的用户名和密码的缘故。这一问题不仅影响我远程工作进度,甚至困扰我几个晚上,百思不得其解。有时候就是会突然的灵光一闪,想到了 git 用户名和邮箱的问题,上网查了一下,我之所以代码代码提交被拒是因为,我用了 GitHub 的用户名和邮箱去提交 GitLab 的代码,当然会出问题!所以需要重新配置之一下。

    2、全局配置 git 用户名和邮箱

    git config --list 查看 git 配置信息 git config --global --list 查看 git 全局配置信息
    git log

    查看 commit 历史(会显示提交的用户名和邮箱)

    git reflog 查看所有 commit ,包含 git reset --hard [..] 之前的 commit 历史,以及 commit 之间 reset 的跳转信息
    注意:在使用 git reset --hard [commit] 之前,需要将暂存区的代码进行提交,否则执行命令后 git 会将当前没提交的代码删除。
    git config user.name 查看 git 用户名 git config user.email 查看 git 用户邮箱
    git config --global user.name "name" 全局配置 git 用户名
    git config --global user.email "yourEmail.com" 全局配置 git 用户邮箱
       
    git config --global user.name 你的英文名、、git config --global user.email 你的邮箱、、git config --global push.default simple
    git config --global core.quotepath false、、git config --global core.editor "code--wait"、、git config --global core.autocrlf input

    3、同时使用GitHub和GitLab

    由于公司团队使用 GitLab 来托管代码,同时,个人在 Github 上还有一些代码仓库,可公司邮箱与个人邮箱是不同的,由此产生的 SSH key 也是不同的,这就造成了冲突 ,如何在一台机器上面同时使用 Github 与 Gitlab 的服务?

    简单来说,你可以配置一个全局的用户名和邮箱,自己的多个项目上传 github 的时候都会验证这个全局的用户名和邮箱。公司的项目配置一个本地的用户名和邮箱,这样上传代码到 gitlab 的时候就会验证你本地用户名和邮箱。这样就不用来回切换用户名和邮箱了,可以避免提交代码被拒的情况发生。同时使用GitHub和GitLab

    git config --global user.name "name" 全局配置 git 用户名
    git config --global user.email "yourEmail.com" 全局配置 git 用户邮箱
    git config --local user.name "name" 本地配置 git 用户名
    git config --local user.email "yourEmail.com" 本地配置 git 用户邮箱
    在配置本地用户名和邮箱时需要注意,比如:需要给 Project 项目配置本地用户名和邮箱,则需要到 Prooject 项目下输入 git 配置命令。
    展开全文
  • 同时使用github和gitlab

    2019-04-01 16:31:52
    直接默认已经配置好了github密钥和gitlab密钥。 新手需要注意,密钥xxx 公钥xxx.pub是一一对应的关系.pub后缀代表公钥;密钥和公钥可以随意改变名字,只要保证不重名即可。 在~/.ssh文件夹下生成一个config配置...

    Step 1

    直接默认已经配置好了github密钥和gitlab密钥。

    新手需要注意,密钥xxx 公钥xxx.pub是一一对应的关系.pub后缀代表公钥;密钥和公钥可以随意改变名字,只要保证不重名即可。

    在~/.ssh文件夹下生成一个config配置文件,命令行

    cd ~/.ssh
    vim config
    复制代码

    在vim编辑界面输入

    # gitlab
    Host gitlab
        User git
        HostName gitlab.com
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/id_rsa_gitlab
    
    # github
    Host github
        User git
        HostName github.com
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/id_rsa_github
    复制代码

    针对不同的host配置不同的认证方式:

    HostName—— 需要匹配的github或者gitlab地址;(gitlab地址写全公司的完整域名,如:gitlab.companyName.com

    IndentityFile—— 认证的私钥地址

    测试一下是否可以链接

    ssh -T git@gitlab.xxx.com
    Welcome to GitLab,xxx
    复制代码
    ssh -T git@github.com
    Hi,xxx! You've successfully authenticated, but GitHub does not provide shell access.
    复制代码

    Step 2

    设置全局username和email,因为大部分情况下,还是开发公司项目,所以配置全局git config 为公司的 username 和 email

    $ git config --global user.name 'xxx' #公司账号名称
    $ git config --global user.email 'xxx@companyName.com' #公司账号邮箱
    复制代码

    默认情况下,所以新clone下来新建立的,默认提交时都会以全局的username 和 email提交。

    当需要换提交身份时,在提交目录下

    $ git config --local user.name 'xxx' #github账号名称
    $ git config --local user.email 'xxx@gmail.com' #github账号邮箱
    复制代码

    Step 3

    linux/mac系统利用zsh可全局配置一个github的命令

    vim .zshrc
    复制代码

    在zsh文件添加一行

    ...
    alias github="git config --local user.name 'xxx' && git config --local user.email 'xxx@163.com' "
    ...
    复制代码

    注意

    git config --list
    复制代码

    通过该命令可以查看该目录下git config,默认情况

    ...
    user.name=xxx
    user.email=xxx@company.com
    ...
    复制代码

    当执行step2里最后修改local config的命令时,会在最后加上user.name=newxxx

    ...
    user.name=xxx
    user.email=xxx@company.com
    ...
    user.name=newxxx
    复制代码

    即local的config可以覆盖掉global的config

    特别提醒,自动deploy的很多项目,可能某些情况下可能无法提供配置的yaml;例如hexo,如和修改呢?找到他自动生成的git目录,切换到该分支下,修改.deploy_git目录下的local git config即可实现修改提交身份。所以,通用解决方案就是找到git目录,修改当前目录的local config。

    转载于:https://juejin.im/post/5ca23ce3e51d45796613ea26

    展开全文
  • 如何同时使用Github和Gitlab如何同时使用Github和Gitlab准备条件环境配置生成公钥,配置文件测试连接最后感言 如何同时使用Github和Gitlab 同时使用gitlab和github,向远程推拉代码,关键就是在本地分别配置好各自的...

    如何同时使用Github和Gitlab

    同时使用gitlab和github,向远程推拉代码,关键就是在本地分别配置好各自的ssh公钥与远程关联即可。话不多说,开始!

    准备条件

    以我个人情形为例:公司业务代码在gitlab上,我个人的测试项目代码在github上。我这里以两个账号为例,即github和gitlab上分别使用不同的邮箱。
    操作系统:windows

    环境配置

    gitlab上使用global全局变量,github上使用local变量,其区别在于local变量只能在本地仓库下生效,而global则是全局的。
    在任何目录下配置global全局变量

    $ git config --global user.name "用户名"
    $ git config --global user.email "邮箱”
    
    

    配置成功,使用命令查看,最终效果:
    global变量配置

    进入github项目下配置local变量

    $ git config --local user.name "用户名"
    $ git config --local user.email "邮箱”
    
    

    配置成功,使用命令查看,最终效果:
    local变量配置

    生成公钥,配置文件

    配置文件统一放在/c/Users/Administrator/.ssh 目录下配置gitlab与github的公钥与私钥:
    效果图
    使用命令:

    $ssh-keygen -t rsa  -C “邮箱” 
    

    在这里插入图片描述连续回车3次
    这里默认在/.ssh 下生成id_rsa与公钥id_rsa.pub (window目录为C:\Users\Administrator.ssh)。这里我先使用gitlab邮箱使用默认名称,生成公钥id_rsa.pub文件后,将里面的全部内容复制到gitlab的sshkey上,同理换成github邮箱生成密钥时,为了防止与gitlab默认id_rsa冲突,可以在第一次回车是指定文件名:
    在这里插入图片描述
    或者在生成命令时指定也可以

    $ssh-keygen -t rsa  -C “邮箱”  -f “文件名”
    

    然后同样的将公钥内容复制到github的sshkey配置添加进去。
    最后一步配置
    在/.ssh/目录下创建一个config文件(名称无所谓),然后指定两套的公钥与私钥分别指向哪个域名

    $touch config
    $vi config
    

    文件如下:

    Host github.com
        HostName github.com
        User 你自己的邮箱1
        IdentityFile ~/.ssh/id_rsa_github
    
    Host gitlab.com
        HostName gitlab.com
        User 你自己的邮箱2
        IdentityFile ~/.ssh/id_rsa
    
    

    在这里插入图片描述

    Tips:1.gitlab的域名我是用的是公司的ip地址,所以这里配置的不是gitlab.com,否则用ssh测试连接无法通过。
    在这里插入图片描述
    2./.ssh/目录下的known_hosts为系统识别的免密登录用户配置信息,当成功添加github与gitlab的公钥,并向远程建立连接后,会自动生成known_hosts文件。

    测试连接

    好了,上面的配置完毕后,开始沟通远程

    在这里插入图片描述
    至此,一台机器同时与gitlab与github建立连接实现!

    最后感言

    第一次写博客,虽然内容很简单,但是讲述这个事实是很麻烦的,xd。
    最后,文章如有不正之处,还望各位不吝赐教,批评指正,谢谢!

    展开全文
  • 工作在使用gitlab作为代码托管的程序员,可能都会有这种在一台电脑上同时安装GitHub gitlab的需求。也是因为最近在自己的电脑上安装GitHub gitlab遇到了几个问题,分享给大家,好让大家少浪费点时间,把时间...
  • 场景:我希望同时使用GitHub和GitLab,GitHub学习使用,GitLab工作使用。 过程:很奇怪,我反复配置了多次都无法使用两套密钥(一套对hub,一套对lab),即使使用 ssh -T git@github 测试没问题,也无法正常使用...
  • github和gitlab同时使用

    2019-12-27 11:57:10
    作者:Voluee 由于公司团队使用 GitLab 来托管代码,同时,个人在 Github 上还有一些代码仓库,可公司邮箱...github和gitlab同时使用 问题产生场景 无密码与远程服务器交互的秘密 - SSH 如果采用ssh 协议或者git 协...
  • GitHub和gitlab同时使用

    2020-06-18 23:20:19
    ssh-keygen -t rsa -C "1112346@qq.com" -f ~/.ssh/gitlab_id-rsa ssh-keygen -t rsa -C "1112346@qq.com" -f ~/.ssh/github_id-rsa 然后在各自的网站的setting添加add ssh,把pub复制上去。 接下来配置config文件...
  • window7下同时使用github和gitlab

    千次阅读 2019-03-19 17:17:22
    最近公司的代码管理慢慢从svn迁移至gitlab(可参阅相关笔记),而个人也一般会采用github托管一些开源代码代码。如何能在本机环境下二者切换自如,免密,无冲突提交,这个分享下。 注:个人环境是window7,...
  • 方案一:强烈推荐一个ssh key同时连接github和gitlab的解决方案 用gitlab的ssh连接github https://blog.csdn.net/liyanlei5858/article/details/79108060 方案二:不同的ssh key分别连接github和gitlab,有一个...
  • 公司用的是gitlab,默认会在.ssh目录下生成id_rsaid_rsa.pub。 但是当本人用github,也需要生成ssh key,那就会将原来的ssh key给覆盖掉, 为了不让覆盖,我将github上生成的ssh key已不同的名字保存到了其它文件夹...
  • gitHub gitLab

    2017-03-21 22:14:00
    在配置gitLab和gitHub同时使用时,配置了config文件以后,发现还是无法访问github还是有permit denied问题,这说明配置文件并没有被github查阅到 方法如下 执行$ ssh-add ~/.ssh/(你使用的github公钥的文件名) 就...
  • 公司使用的gitlab,我个人使用的是github,所以需要在同一台机器上面同时使用这两个远程仓库 二、生成GitLab和GitHub的SSH ssh-keygen -t rsa -C "注册 gitlab 账户的邮箱" ssh-keygen -t rsa -C "注册 github 账户...
  • 问题:在学git的时候跟着教程用的是github,然后小组里需要用gitlab。怎么同时配置ssh,中间各种小问题。 最终成功啦。 解决办法: 参考下边两篇文章 1.http://riny.net/2014/git-ssh-key/ 但是修改config并没有...
  • 原来用git关联github时已经创建了一个密钥,但是现在因为项目需要在内网使用gitlab,又不想二者使用同一个密钥,所以另外生成一个密钥。 一、生成密钥 打开git bash,输入 ssh-keygen -t rsa -C "xxx@xxx....
  • 生成 ssh key 上传到 GithubGitlab 配置 config 文件 上传public key 到 GithubGitlab 验证是否OK 一般开发人员在公司工作需要用公司内部的gitlab,自己喜欢写一点小代码则会用到github,如何在一台机器上用两...
  • github和gitlab的区别

    2019-08-19 10:32:18
    先说一下相同点,二者都是基于web的Git仓库,在很大程度上GitLab是仿照GitHub来做的,它们都提供了分享开源项目的平台,为开发团队提供了存储、分享、发布合作开发项目的中心化云存储的场所。 区别 GitHub作为开源...
  • git连接github和gitlab

    2019-07-29 10:26:33
    公司给了我一个gitlab账号。, 安装git 连接gitlab,使用ssh链接,报错了。 但是结果不重要,重要的是过程: 1、git安装及配置 ...2、同时使用github和gitlab https://www.jianshu.com/p/88...
  • github和gitlab仓库一起使用转载地址:https://www.cnblogs.com/bdhk/p/7423329.htmlgithub是网络公有代码仓库,一般用于私人代码托管,而gitlab一般是企业搭建的内部代码仓库。工作期间,我们都会同时用到这两个...
  • git、GitHub和gitlab的区别

    千次阅读 2017-12-06 22:57:32
    同时也是一个版本控制软件。GitHubGitHub 是一个面向开源及私有软件项目的托管平台。GitHub可以托管各种Git库,并提供web界面。GitLabGitLab 是一个用于仓库管理系统的开源项目,使用git进行代码管理工具,可以自己...
  • 设置完成git的usernameuseremail后,添加ssh成功。网上好多教程,不赘述了。 1、github的配置 在github界面,右上角Settings 、SSH and GPG keys、New SSH key,...gitlab的配置和github基本一样,添加完SSH就完事...
  • 背景 通常我们的笔记本,在公司的时候需要连公司的gitlab,在家的时候学习需要连github或bit...只要在电脑上生成公钥和私钥,把同样的公钥在github、bitbucket和gitlab上设置就行了,共用一份。 步骤 以下以我的...

空空如也

1 2 3 4 5 ... 11
收藏数 202
精华内容 80
关键字:

同时github和gitlab