Git如何合并并删除本地以及远程误创建并提交的master分支到Git默认的main分支?
Git如何合并并删除本地以及远程误创建并提交的master分支到Git默认的main分支?
注意
本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。
事件回顾
- 由于本人在本地创建了一个项目,将其推送到Git远程仓库后,发现本地的是master远程的是main,这就造成了默认的主分支不一致,故而有了这个需求
问题1:现在github 上默认没有master分支了吗?
GitHub上新创建的仓库默认的分支名仍然是master
。但是,GitHub在2020年宣布将默认分支名从master
更改为main
,以避免使用可能被视为种族歧视的词汇。因此,如果您在2020年之后创建了新的仓库,或者仓库是在GitHub宣布这一变更后被初始化的,那么默认分支名可能是main
。
如果您在推送代码时遇到问题,可能是因为您的本地分支名和远程仓库的默认分支名不一致。您可以检查远程仓库的默认分支名,然后确保您的本地分支名与之匹配。以下是如何检查和设置默认分支名的步骤:
检查默认分支名:
- 登录到您的GitHub仓库页面。
- 点击“Settings”(设置)。
- 在“Options”(选项)部分,找到“Default branch”(默认分支)设置。
- 这里会显示当前的默认分支名,您可以确认它是
master
还是main
。
更改默认分支名:
- 如果您想要更改默认分支名,可以在“Default branch”设置中进行更改。
- 选择您想要设置为默认的分支,然后点击“Update”(更新)。
本地分支与远程分支同步:
- 如果您的本地分支名和远程仓库的默认分支名不一致,您可以通过以下命令来重命名本地分支:这条命令将本地的
git branch -m master main
master
分支重命名为main
。 - 然后,您可以将更改推送到远程仓库:
git push -u origin main
- 如果您的本地分支名和远程仓库的默认分支名不一致,您可以通过以下命令来重命名本地分支:
请注意,更改默认分支名可能会影响您的团队成员和项目的CI/CD流程,因此在进行更改之前,请确保通知所有相关人员,并更新任何相关的配置。
问题2:为什么本地的git bash 工具 默认就是master不是main?
Git Bash工具本身并不默认创建master
分支,而是遵循您初始化Git仓库时或克隆的远程仓库所使用的默认分支名。自从GitHub宣布将新仓库的默认分支从master
更改为main
以来,如果您创建了新的Git仓库或克隆了新的GitHub仓库,它们通常会以main
作为默认分支名。
如果您在使用Git Bash时默认分支是master
,可能有几个原因:
旧仓库:您正在操作的可能是较旧的仓库,这些仓库在GitHub更改默认分支名之前就已经存在,因此它们使用的是
master
作为默认分支。克隆旧仓库:如果您克隆的是一个在更改默认分支名之前就已经存在的远程仓库,那么克隆下来的仓库也会使用
master
作为默认分支。本地分支未更新:如果您的远程仓库已经将默认分支更改为
main
,但您的本地分支尚未更新,那么您的本地Git Bash仍然会显示master
作为当前分支。远程仓库配置:即使GitHub建议使用
main
,一些组织可能仍然选择使用master
作为默认分支名,以保持与现有工具和工作流程的兼容性。
如果您想要将本地的默认分支更改为main
,可以按照以下步骤操作:
创建并切换到
main
分支(如果尚未存在):git checkout -b main
将
main
分支推送到远程仓库:git push -u origin main
删除远程仓库的
master
分支(如果需要):git push origin --delete master
重命名本地的
master
分支(如果需要):git branch -m master main
更新远程仓库的默认分支(在GitHub仓库的设置中)。
完成这些步骤后,您的本地Git Bash和远程仓库应该会使用main
作为默认分支。请确保在执行这些操作之前备份您的代码,以防不小心丢失数据。
解决问题
- 我是在本地创建了项目,然后初始化之后默认就是master分支,而后关联到Gihub以及Gitee,然后推送至远程仓库,而后在远程仓库中发现主分支为main。。。。。。

- 本地创建main分支
git checkout -b main
git pull github main
git add .
git commit -m "合并master到min"
git pull github main --allow-unrelated-histories
- 在Vim中输入提交信息并完成合并
输入提交信息:
- 在Vim中,按
i
键进入插入模式,开始输入您的提交信息。这将解释为什么合并是必要的,特别是如果它合并了更新的上游到一个主题分支。
- 在Vim中,按
保存并退出:
- 输入完毕后,按
Esc
键退出插入模式。 - 输入
:wq
(表示写入并退出)然后按Enter
键保存提交信息并退出Vim编辑器。
- 输入完毕后,按
如果您不熟悉Vim,可能会觉得这些步骤有些复杂。您也可以使用以下命令来直接完成合并,而不编辑提交信息:
git merge -m "Merge branch 'main' of github.com:wechartApplet/marathonInvertedTriangle" github/main
这个命令中的-m
选项允许您直接提供一个提交信息,从而避免了Vim编辑器的启动。
如果您不想合并远程分支的历史,而是想用远程分支的历史覆盖本地分支(这将丢失本地分支的历史),您可以使用以下命令:
git reset --hard github/main
git push -f github main
请注意,git reset --hard
会重置您的本地分支到远程分支的状态,这将丢失所有本地未提交的更改。git push -f
会强制推送这些更改到远程仓库。
在执行这些操作之前,请确保您已经备份了所有重要的本地更改,以避免数据丢失。
- 提交到远程的main分支
git push github main
- 删除远程和本地的master分支
删除远程仓库的master
分支
- GitHub:
git push github --delete master
- Gitee:
git push gitee --delete master
这些命令会将远程仓库中的master
分支删除。--delete
选项告诉Git您想要删除指定的远程分支。
- 删除本地的
master
分支
git branch -d master
这个命令会删除本地的master
分支。-d
选项是--delete
的简写,它会删除分支,即使分支不完全合并也没关系。
- 检查远程仓库的分支
为了确认master
分支是否已经被删除,您可以使用以下命令来检查远程仓库的分支列表:
- GitHub:
git fetch github
git branch -r
- Gitee:
git fetch gitee
git branch -r
这些命令会显示所有远程分支的列表,您可以检查master
分支是否还在列表中。
- 注意事项
- 在删除分支之前,请确保您不再需要该分支上的任何提交,因为删除分支是不可逆的操作。
- 如果您在删除分支时遇到问题,可能是因为其他协作者正在使用该分支,或者您需要强制删除。如果是这种情况,您可以使用
-D
选项代替-d
选项来强制删除本地分支,或者使用--force
选项来强制推送到远程仓库。 - 请确保您在执行这些操作之前已经备份了所有重要的数据。
按照上述步骤操作后,您应该能够成功地删除Gitee和GitHub的master
分支以及本地的master
分支。
如何规避此类问题
- 在创建本地项目执行初始化后执行以下命令
git branch -m master main //重命名本地master分支为main
- 而后再进行关联远程仓库进行pull和push操作
分割线
相关信息
以上就是我关于 Git如何合并并删除本地以及远程误创建并提交的master分支到Git默认的main分支? 知识点的整理与总结的全部内容,希望对你有帮助。。。。。。。