1+1=10

记记笔记,放松一下...

Git 杂记

工作与个人配置 如何分开?

考虑一个场景:同一台电脑,既用于工作,又要用于个人事务,如何为其配置不同的email。如果这两个都同时位于github或gitlab上。又如何为其指定ssh的key??

假定 E:/work 是为工作服务的,其他都是个人事务,那么只需要为work文件夹指定不同的配置即可:

创建新的ssh key

执行命令:

1
ssh-keygen -t rsa -C "work@example.com"

提示输入文件名时,输入 ~/.ssh/id_work_rsa,以便于和默认key进行区分。

创建 ~/.gitconfig-work

配置用户名,email,以及key, 内容如下

1
2
3
4
5
[user]
    name = "Work"
    email = "work@example.com"
[core]
   sshCommand = "ssh -i ~/.ssh/id_work_rsa"

修改 ~/.gitconfig

当仓库位于work文件夹时,使用工作配置

1
2
[includeIf "gitdir:E:/Work/"]
    path = .gitconfig-work

注意:gitdir指定的路径区分大小写(即使在Windows下)。忽略大小写用gitdir/i

其他

完成类似任务,除了这种做法,gitlab文档中还给出了其他做法:

默认分支: master vs main ?

好多年没在Github上创建新代码仓库,也没有更新公司内的gerrit2和gitlab。2年前就突然注意到,天天看到的master分支,竟已经被main取代...

再仔细看看,变更竟发生在4年前:

时间 事件
2020年6月 GitHub 宣布将把默认分支名改为 main
2020年7月 Git 2.28.0 版本发布,允许用户通过配置选项自定义默认分支
2020年10月 GitHub 新建的仓库默认分支改为 main
2020年10月 GitLab 宣布从 2021 年起新建仓库使用 main 作为默认分支
2021年 其他git平台和工具(如 Bitbucket、Azure DevOps)开始支持 main 作为默认分支。

在此之前:

时间 事件
2014年 Django 宣布将 master-slave 替换为 leader-followerprimary-replica
2017年 Redis 将 master-slave 替换为 primary-replica
2020年 Black Lives Matter 运动引发对种族不公正和系统性种族主义的广泛讨论,推动科技行业重新审视用词。

好吧,更名原因竟然和主人奴隶有关。尽管main与master短也是一个可以说的优势。

Windows版Git的 openssh

在 Git for Windows 2.33.1 版本中,捆绑的 OpenSSH 升级到了 8.8p1 版本。OpenSSH 8.8 默认禁用了使用 SHA-1 算法的 ssh-rsa 密钥。

如果不幸,某些老的网站还在用的旧版的 RSA 密钥,并且默认使用 ssh-rsa 签名算法, 这会造成连接失败

如果不能使用新算法生成密钥对,需要修改ssh配置文件~/.ssh/config

1
2
3
Host *
    PubkeyAcceptedAlgorithms +ssh-rsa
    HostkeyAlgorithms +ssh-rsa

或者只针对特定网站

1
2
3
4
Host codereview.debao.me
   Port 29418
   HostkeyAlgorithms +ssh-rsa
   PubkeyAcceptedAlgorithms +ssh-rsa
Git for Windows 版本 OpenSSH 版本 关键变化 发布时间
2.20.1 OpenSSH 7.9p1 初始版本 2018年12月
2.23.0 OpenSSH 8.0p1 更新到 8.0 版本 2019年8月
2.30.0 OpenSSH 8.4p1 更新到 8.4 版本 2021年1月
2.33.1 OpenSSH 8.8p1 禁用了使用 ssh-rsa 的 RSA 签名 2021年9月

Windows版Git的ssl

简单记录一下

Git for Windows 版本 OpenSSL 版本 关键变化 发布时间
2.20.1 OpenSSL 1.0.2p 使用 OpenSSL 1.0.2 系列 2018年12月
2.23.0 OpenSSL 1.1.1c 升级到 OpenSSL 1.1.1 系列 2019年8月
2.30.0 OpenSSL 1.1.1i 持续更新 1.1.1 系列 2021年1月
2.42.0 OpenSSL 3.0.11 升级到 OpenSSL 3.0 系列 2023年9月

参考

Tools Git