【技术创作101训练营】超简单的公司Git+个人Git共存方式
问题背景:新人的迷思
作为刚进入公司工作的新人,我遇到了一个问题,那就是如何在设置完公司 Git 账号的情况下再使用个人的 GitHub 账号?
在一翻搜索后我发现网上都是使用 SSH 的方式进行多账号的配置,这可以使得在和远端进行交互时不用输入账号密码,但是在配置时需要生成 SSH keys、配置 ~/.ssh/config 等操作,略有些繁琐,而使用 HTTP/HTTPS 则不需要进行这些配置,但 HTTP/HTTPS 貌似每次交互都需要输入账号密码诶。其实并不是这样,只需要通过简单配置就可以使得 HTTP/HTTPS 方式不用每次都输入账号和密码,这样子不管是公司的Gitlab还是个人的Github都只需要在最开始登陆一次,以后便再也不用输入密码了,是不是觉得很棒!下面我来介绍一下这个方法~
一、方法介绍
步骤一: 配置credential.helper
,这个选项是帮助Git记住你HTTP/HTTPS的账号密码。
PS:我其实没有配置这个选项,但是这个选项就默认存在了,大家可以使用下面这个命令来查看自己的Git是否已经存在这个选项,若有返回值(osxkeychain/wincred/cache)则说明你已经可以免密使用 HTTP/HTTPS 方式,直接看步骤二即可。
$ git config credential.helper
下面介绍在 Mac/Windows/Linux 下的credential.helper
设置方法。
1. Mac
$ git config --global credential.helper osxkeychain
提示: 1. 需要 Git 1.7.10 或更高版本才能使用 osxkeychain。 2. 有两种情况是默认装了 osxkeychain的 1. 使用 Homebrew 安装了 Git 2. 运行的系统是Mac OS X 10.7及更高版本,并且通过 Apple 的 Xcode 命令行工具安装了 Git
2. Windows
$ git config --global credential.helper wincred
提示: 需要 Git 1.7.10 或更高版本才能使用 wincred。
3. Linux
$ git config --global credential.helper cache # 默认情况下,Git 会缓存密码 15 分钟
$ git config --global credential.helper 'cache --timeout=3600' #更改默认的密码缓存时限为1小时
提示: 需要 Git 1.7.10 或更高版本才能使用 cache。
步骤二、配置用户名/邮箱(非必须)
不知道大家记不记得得在一开始配置Git时是否输入过下面两个命令:
$ git config --global user.email "xxxx@xx.com"
$ git config --global user.name "xxxx"
不记得也没关系,可以通过在 非git目录 输入下面的命令来查看自己是否设置了这两个值:
$ git config user.email
$ git config user.name
通过 --global
设置的这两个值会给你这个系统用户下所有的Git仓库都设置上相同的邮箱和用户名,也就是说不管你使用的是公司Git还是个人Git,push到远端仓库时都会使用这两个值来标记你。
如果你觉得两个Git使用相同的无所谓,那么可以跳过这个设置步骤。
那如果不想在公司Git和个人Git使用相同的邮箱和用户名呢?方法:打开本地Git仓库,使用如下命令单独设置每个Git仓库的用户名/邮箱:
$ git config user.email “xxxx@xx.com”
$ git config user.name “xxxx”
这个设置就会覆盖掉--gloabal
的设置值,只在对应的仓库内生效,可以类比联想面向对象的继承特性。
如果平时使用公司Git比较多的情况,可以把公司的用户名/邮箱设置为
--global
,然后在个人Git的仓库下配置对应的账号,这样就不用频繁地设置这两个值。
=======
方法介绍已经结束,掌握这个命令就已经能够正常使用公司Git+个人Git两个账号了。大家赶时间的话看到这里就可以结束啦,自行去操作验证。下面会介绍我自己的操作验证步骤。
=======
二、方法验证
前提:我本地已经可以免密使用 HTTP/HTTPS 的方法操作公司Git了,现在想要验证可不可以免密使用 HTTP/HTTPS 操作 Github。
- 克隆一个Github仓库到本地:
- 修改 README.md 并 add/commit:
- push到远端,因为是第一次 push,要求我输入了账号和密码:
- 重复上述步骤,发现没有再次要求输入账号密码!
到这里说明免密已经成功,不过题目都说了是公司Git+个人Git共存方式,那接下来就验证一下公司 git 是否能正常使用呢?
- 查看公司 git 是否正常使用,公司 git push 成功!
后记
当然,这个方法也存在局限性,那就是不能解决同时存在两个同一 Git 网站的账户,比如不能同时存在两个 Github 的账户,这个问题就只能通过 SSH 的方式进行解决了。
参考
- 在 Git 中缓存 GitHub 凭据:https://docs.github.com/cn/github/using-git/caching-your-github-credentials-in-git
- 一台电脑绑定两个git帐号(GitHub和GitLab):https://blog.csdn.net/jifaliwo123/article/details/79126785
- 初次运行 Git 前的配置:https://git-scm.com/book/zh/v2
- POJ 2478Farey Sequence
- cookie、session、token三者使用
- SpringCloud注册中心集群搭建
- SpringCloud配置中心集群搭建
- HDU1846 Brave Game
- 拉格朗日插值
- python爬虫入门(二)Opener和Requests
- python爬虫入门(三)XPATH和BeautifulSoup4
- python爬虫入门(四)利用多线程爬虫
- LOJ #115. 无源汇有上下界可行流
- 数据库改名系列(数据库名,逻辑名,物理文件名)
- BZOJ1468: Tree
- 洛谷P3806 【模板】点分治1
- 探索ASP.NET MVC5系列之~~~5.缓存篇(页面缓存+二级缓存)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法