晚上浏览GitHub时偶然看到一个项目仓库github/renaming[1],该仓库是GitHub的官方仓库,内容相对权威。
大意是说:GitHub网站上仓库的默认分支是master,为了减少种族歧视,决定更改为main。看起来似乎是不大的改动,实际上牵一发而动全身,是系统性的影响。比如Git工作流、基于仓库的CI/CD、PR等流程。
正因为影响比较大,所以GitHub决定慢慢来,提醒各位开发者不要轻举妄动。
GitHub规划的时间线是:
对于已经把默认分支名改为main的,GitHub会提供支持,把指向原来master分支的链接重定向到新的。尚未改动的,GitHub后续会提供一个工具,帮助开发者尽可能无缝迁移。
7月31号,GitHub Pages功能支持任意分支,不再局限于master和gh-pages
今年夏天,GitHub平台将支持默认分支名可配置
到今年底,GitHub支持开发者修改默认分支名,并且不会影响PR、git clone等操作。
Git
Git是当前最主流的源代码版本管理工具,也是GitHub的底层技术。Git也会在2.28版本中提供新功能,提供init.defaultBranch
,用于指定初始化项目时的默认分支名。
开发者首先要把自己的Git升级到2.28以上的版本:
➜ dotfiles git:(master) ✗ git --version
git version 2.28.0
然后运行命令git config --global init.defaultBranch main
,这样你的git配置文件会出现如下新的配置:
[merge]
tool = vimdiff
log = true
[init]
defaultBranch = main
然后我们新建一个Git仓库试试,这时新的分支已经变成main啦:
➜ newbranck git init
Initialized empty Git repository in /newbranck/.git/
➜ newbranck git:(main)
总结
变更默认分支名
这个看似简单的功能,却需要产业上下游协同努力,超过半年时间。可见软件开发和项目管理并不容易,这时你还会相信产品经理那句加个按钮,明天完成啊
这种鬼话吗?
产品经理的嘴,骗人的鬼!
参考资料
[1]
github/renaming: https://github.com/github/renaming
[2]the Git 2.28 blog post: https://github.blog/2020-07-27-highlights-from-git-2-28/#introducing-init-defaultbranch
我是陆道峰,菜鸡码农,以工程师的视角带你看待这个世界,欢迎关注~