【技术创作101训练营】超简单的公司Git+个人Git共存方式

时间:2022-07-25
本文章向大家介绍【技术创作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下存在这个选项.png

下面介绍在 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到远端仓库时都会使用这两个值来标记你。

远端仓库显示的用户名.png

如果你觉得两个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仓库到本地:
克隆一个Github仓库到本地.png
  • 修改 README.md 并 add/commit:
修改 README.md 并 add/commit.png
  • push到远端,因为是第一次 push,要求我输入了账号和密码:
push到远端.png
  • 重复上述步骤,发现没有再次要求输入账号密码!
image.png

到这里说明免密已经成功,不过题目都说了是公司Git+个人Git共存方式,那接下来就验证一下公司 git 是否能正常使用呢?

  • 查看公司 git 是否正常使用,公司 git push 成功!
image.png

后记

当然,这个方法也存在局限性,那就是不能解决同时存在两个同一 Git 网站的账户,比如不能同时存在两个 Github 的账户,这个问题就只能通过 SSH 的方式进行解决了。

参考

  1. 在 Git 中缓存 GitHub 凭据:https://docs.github.com/cn/github/using-git/caching-your-github-credentials-in-git
  2. 一台电脑绑定两个git帐号(GitHub和GitLab):https://blog.csdn.net/jifaliwo123/article/details/79126785
  3. 初次运行 Git 前的配置:https://git-scm.com/book/zh/v2