git从安装到多账户操作一套搞定(二)多账户使用
作者:良知犹存
转载授权以及围观:欢迎添加微信:Allen-Iverson-me-LYN
总述
GIT是当今热门代码管理技术,但是如此火的系统,竟然是大神林纳斯花了两周用C写出来的一个分布式版本控制系统。github就是依托git技术发展的当今世界最大的代码管理平台。
这么好用的git教程也是很多,但是我因为在工作中遇到需要在一台电脑上实现公司git服务器和自己私人的远程仓库两个账户的推送,看了好多篇文章,终于设置成功,觉得有些操作需要特别注意,遂写这篇文章提示大家,希望可以帮助到大家,从安装到使用一气呵成。
继上一篇文章继续分享GIT的使用,git从安装到多账户操作一套搞定(一)入门使用
四、GIT多账号配置
ssh 方式链接到 Github/GitLab,需要唯一的公钥,如果想同一台电脑绑定两个Github/GitLab 帐号,需要两个条件:
能够生成两对 私钥/公钥
push 时,可以区分两个账户,推送到相应的仓库
解决方案:
1. 生成 私钥/公钥 时,密钥文件命名避免重复
2. 设置不同 Host 对应同一 HostName 但密钥不同
3. 取消 git 全局用户名/邮箱设置,为每个仓库独立设置 用户名/邮箱
上一篇文章描述了一个账号从生成rsa密钥到推送到github仓库的示例,按照上篇文章git从安装到多账户操作一套搞定(一)入门使用我们继续生成第二把密钥,只不过这把密钥需要特别的配置一下。
1>查看已有 密钥
下输入命令 ls ~/.ssh/,看到 id_rsa 与 id_rsa_pub 则说明已经有一对密钥。如下图
2>生成新的公钥,并命名为 id_rsa_2 (保证与之前密钥文件名称不同即可,文件名最好有意义,否则写后面的配置的时候写错文件名,我的文件名是id_rsa_ljy)
ssh-keygen -t rsa -f ~/.ssh/id_rsa_2 -C "yourmail@xxx.com"
3>在 .ssh 文件夹下新建 config 文件并编辑,令不同 Host 实际映射到同一HostName,但密钥文件不同。Host 前缀可自定义:
# defaultHost 192.168.1.xx(自行按照IP配置)HostName 192.168.1.xx(自行按照IP配置)User gitIdentityFile ~/.ssh/id_rsa_2# twoHostieit.github.comHostName github.comUser gitIdentityFile~/.ssh/id_rsa
参考文章:
https://blog.csdn.net/jifaliwo123/article/details/79126785
注意点:
在配置文件中的,IdentityFile文件位置是rsa密钥,不是pub文件
提交代码的时候,需要修改git config 可以之设置一个全局的user.email和user.name,然后需要不同的配置的仓库,单独设置
上一篇设置了--global user.name --global user.email
这次多账户使用需要设置,单独的文件夹下面的邮箱与名称,保证我们使用该文件夹下文件进行git操作的使用,对应的账户名和邮箱属于除去主账号之外的账号。
//设置仓库的user.email和user.name
gitconfig user.email"yeungeek@gmail.com"
gitconfig user.name "yeungeek"
开始在github 或者私有服务器设置公钥 这部分上一篇也都描述很详细。下面就用新的账户进行另一种方法的git上传。
这里我还是在github的截图,因为公司使用的保密性,所以我不进行展示,我只是表示用上面方法我成功进行了一台pc两个账户使用。
五、GIT多账号使用
第二种方法 通过本地建立仓库直接远程上传
echo "# Simple-red-black-tree" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origingit@github.com:conscience-still/Simple-red-black-tree.git
git push -u origin master
新建一个README.md
$ git add . //添加到暂存仓库
$ git commit -m "simple red-black tree" //添加上传注释
再次设置本文件夹下的用户名和邮箱
在Github上创建好Git仓库之后我们就可以和本地仓库进行关联了,根据创建好的Git仓库页面的提示,可以在本地Simple-red-black-tree仓库的命令行输
$ git remote add origin git@github.com:conscience-still/Simple-red-black-tree.git
关联好之后我们就可以把本地库的所有内容推送到远程仓库(也就是Github)上了,通过:
$ git push -u origin master
由于新建的远程仓库是空的,所以要加上-u这个参数,等远程仓库里面有了内容之后,下次再从本地库上传内容的时候只需下面这样就可以了:
$ git push origin master
至此就完成了将本地项目上传到Github的整个过程。
另外,这里有个坑需要注意一下,就是在上面第七步创建远程仓库的时候,如果你勾选了Initializethis repository with a README(就是创建仓库的时候自动给你创建一个README文件),那么到了第九步你将本地仓库内容推送到远程仓库的时候就会报一个failedto push some refs to https://github.com/guyibang/TEST2.git的错。
这是由于你新创建的那个仓库里面的README文件不在本地仓库目录中,这时我们可以通过以下命令先将内容合并如下:
$ git pull --rebase origin master
这时你再push就能成功了。
参考文章:
https://blog.csdn.net/Lucky_LXG/article/details/77849212
这就是我分享的git的基本操作,里面过程都是实践过的,很多地方都是边学边做,感谢很多博主的文章,好多也没有直接交流, 只是在这里表达一些感谢。如果大家有什么更好的思路,欢迎分享交流哈。
更多分享,扫码关注我
git从安装到多账户操作一套搞定(二)多账户使用的更多相关文章
- git从安装到多账户操作一套搞定(一)入门使用
作者:良知犹存 转载授权以及围观:欢迎添加微信:Allen-Iverson-me-LYN 总述 GIT是当今热门代码管理技术,但是如此火的系统,竟然是大神林纳斯花了两周用C写出来的一个分布式版 ...
- 在mac上安装gradle(超详细,直接按步骤操作即可轻松搞定)
第一步, 就是先download最新版本的gradle,网址如下: http://gradle.org/gradle-download/ 然后将下载下来的zip包放解压到本地任意的路径上, 例如,我本 ...
- CentOS安装Yarn只需两步就搞定
Yarn 是一个依赖管理工具.它能够管理你的代码,并与全世界的开发者分享代码.Yarn 是高效.安全和可靠的,你完全可以安心使用.代码是通过包(有时也被称为组件). 在每一个包中会定义一个 packa ...
- Shell 脚本之 MySQL 一键安装及基本配置(几分钟搞定)
准备工作 MySQL 该版本下载地址: https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.30-linux-glibc2.12- ...
- Git配置安装使用教程操作github上传克隆数据
Git是何方神圣? Git是用C语言开发的分布版本控制系统.版本控制系统可以保留一个文件集合的历史记录,并能回滚文件集合到另一个状态(历史记录状态).另一个状态可以是不同的文件,也可以是不同的文件内容 ...
- Git的安装及常用操作
一.Git的安装 1.下载Git,官网地址为:https://git-scm.com/downloads. 2.下载完成之后,双击目录进行安装 3.选择安装目录 4.选择组件,默认即可 5.设 ...
- Git 基础 —— 安装 配置 别名 对象
Git 基础学习系列 Git 基础 -- 安装 配置 别名 对象 Git 基础 -- 常用命令 Git 基础 -- 常见使用场景 Git基础 -- Github 的使用 Git 安装 Git下载地址 ...
- windows 系统下git 的安装
在linux系统下,可以直接在命令窗口安装和使用git.但是,在windows系统下,想要达到同样的效果,可以安装git,使用git bash到达效果.具体安装步骤如下: 第一步:官网上下载git 网 ...
- git的安装和简单使用
目前windows版本的git有几种实现,但我们选择msysgit发行版,这是目前做得兼容性最好的. 下载地址: http://code.google.com/p/msysgit/downloads/ ...
随机推荐
- 接口的不同写法在Swagger上的不同
接口请求方法类型 (1) 如果接口没有指定请求的 method 类型,例如 GET.POST.PUT.DELETE 等. Swagger中 (2)指定了请求方法后 Swagger中就只有一个GET请求 ...
- ABP vNext 自动注入,暗藏天坑如斯
导言 我们在使用ABP vNext框架时,都知道该框架为我们实现了自动依赖注入(实现自动注入需要在项目里面创建Module类,并且将Module类上的DependsOn到相应的启动Module类或调用 ...
- 经典项目管理 OR 敏捷项目管理,我该怎么选?
CODING 项目协同近期为支持传统项目管理推出了「经典项目管理」.至此,CODING 已全面支持敏捷项目管理以及传统项目管理.那么问题来了,「经典项目管理」和「敏捷项目管理」,我该怎么选呢?本文将从 ...
- Java 并发编程要点
使用线程 有三种使用线程的方法: 实现 Runnable 接口: 实现 Callable 接口: 继承 Thread 类. 实现 Runnable 和 Callable 接口的类只能当做一个可以在线程 ...
- go跳出多层循环的几种方式
前言 比如这样的需求, 遍历一个 切片, 切片内容是切片1, 需求是判断切片1中某个是否有相应数据, 有就返回 正文 我们需要考虑的是在写两层遍历时如何在获取结果后结束这两层遍历 变量法 设置一个变量 ...
- Java 使用拦截器无限转发/重定向无限循环/重定向次数过多报错(StackOverflowError) 解决方案
说明:当使用拦截器出现"请求转发"无限循环或者"重定向"次数过多这种问题的时候,一般都是 拦截器 设置错了 情况一:请求转发时没有配置排除拦截路径,就是说你访问 ...
- 【Java集合】HashSet源码解析以及HashSet与HashMap的区别
HashSet 前言 HashSet是一个不可重复且元素无序的集合.内部使用HashMap实现. 我们可以从HashSet源码的类注释中获取到如下信息: 底层基于HashMap实现,所以迭代过程中不能 ...
- C++中的extern“C”
首先引入extern"C"的官方解释 extern "C" is meant to be recognized by a C++ compiler and to ...
- AttGAN: Facial Attribute Editing by Only Changing What You Want 论文阅读笔记和AttGan的pytorch代码实现
1.总体框架 上面的过程用详细描述即是 Test阶段: Train阶段: 由于我们无法得知编辑后的image,所以显而易见人脸属性编辑是一个无监督问题,而对于我们的xa需要获得关于b的属性,故利用at ...
- mysql—make_set函数
使用格式:MAKE_SET(bits,str1,str2,-) 1 返回一个设定值(含子字符串分隔字符串","字符),在设置位的相应位的字符串.str1对应于位0,str2到第1位 ...