Git:重命名“master”分支
最近,GitHub 的 CEO回复了一条关于将默认 Git 分支从 重master
命名为 的推文main
,并表示:“这是一个好主意,我们已经在着手处理了!” 或许你会觉得,像master
、slave
、 和 这样的词语blacklist
如今带有种族歧视的色彩,或者带有不良含义。然而,我希望我们都能认同,拥有更改名称的专业知识和工具总是好的。分支名称也同样如此。
重命名 Git 分支并不难。然而,当你想同时在本地和上游重命名时,就会变得稍微困难一些。对于默认分支来说,情况会更加棘手,因为 Git 有一个有趣的事实,我认为这是一个设计缺陷:Git 没有内置的远程更改默认分支的方法。开发人员需要前往其托管地(GitHub、GitLab、Bitbucket 等)进行更改。
因此,我今天花了一些时间,想出了一个重命名分支的程序,并用它重命名了我维护的大约 60 个公共和私有 Git 仓库。我想在这里发布一篇关于它的文章,以防有人感兴趣或需要自己学习:
-
重命名您的本地分支。
git 分支 -m 主主分支
-
将重命名的分支推送至上游并设置远程跟踪分支。
git push -u 源主目录
-
登录上游存储库主机(GitHub、GitLab、Bitbucket 等)并更改“默认分支”。
-
删除上游的旧分支。
git push origin --delete master
-
更新上游远程的 HEAD。
git remote set-head origin -a
以上就是关于你这边以及你的仓库托管位置的内容。现在,如果是其他人的仓库重命名了分支,而你持有的远程分支(可以这么说)是一个已经不存在的“悬空”引用,你该怎么办?
如果您知道分支已重命名,则无需担心。以下步骤将帮助您恢复正常:
-
从远程获取最新分支。
git fetch --all
-
更新上游远程的 HEAD。
git remote set-head origin -a
-
切换本地分支以跟踪新的远程分支。
git branch --set-upstream-to origin/main
-
在本地重命名您的分支。
git 分支 -m 主主分支
就是这样!注意,如果没有 remote/upstream,操作会简单得多。只需git branch -m master main
重命名一个分支即可。其他命令都关注的是将本地分支与远程分支匹配(通过跟踪分支),并更新 HEAD 引用以指向“默认”分支。
[编辑:@eyqs制作了一个简洁的工具来自动化这个过程,包括更改 GitHub 上的默认分支,这样你就不用手动操作了!当然,一如既往,使用风险自负,请先自行阅读代码,确保可以信任它等等。eyqs.ca/ tools/rename /]
鏂囩珷鏉ユ簮锛�https://dev.to/rhymu/git-renaming-the-master-branch-137b