master分支与main分支的问题

45 篇文章 0 订阅
11 篇文章 1 订阅
本文详述了配置SSH公私钥连接GitHub、Gitee、Gitlab及极狐(JihuLab)的过程,并讨论了GitHub中默认分支从master改为主分支main的变更,包括如何将内容从master分支迁移到main,以及处理git命令行提交和合并冲突的问题。
摘要由CSDN通过智能技术生成

最新相关博客:GitHub&Gitee&Gitlab&极狐(JihuLab)配置SSH公私钥详细过程 2023-9-9 09:06:16 补充
使用git命令行方式提交项目到GitHub 2023-12-2 22:20:13 补充

这里推荐我转载外国博主关于这个问题的文章,里面有微软官方的一些说明
5步将 GitHub 默认分支从 Master 更改为 Main(转载)

一、问题

1.1 问题1 默认分支 default branch

使用git命令行方式提交项目到GitHub使用git命令行方式提交项目到GitHub)时发现一个问题:该项目目前有两个分支,一个是默认分支main,另外一个是分支master。我推送项目的默认分支并不是main,而是master(所以下图选择分支main中,无任何内容)。当时执行了git push -u origin master命令。因为GitHub之前的默认分支一直就是master,但2020年10月后GitHub宣布:新建项目的默认分支将从master逐步改为main。

在这里插入图片描述
选择分支master中,才会显示我们之前push到远端仓库的内容。
在这里插入图片描述
可以在此项目的Settings里的Branches位置看到Default branch确实就是main

The default branch is considered the “base” branch in your repository, against which all pull requests and code commits are automatically made, unless you specify a different branch.
默认分支被认为是存储库中的“基本”分支,所有的拉取请求和代码提交都会自动执行,除非您指定了另一个分支
在这里插入图片描述
Settings里提供了更改默认分支名称的功能
在这里插入图片描述

1.2 问题2 Add a README file

我在创建仓库时点了“Add a README file”文件,这样会自动帮你创建一个README Markdown File。这样其实没什么大的问题,但会使得远端仓库和本地仓库从创建开始就失去了整合性(因为这个README文件目前只存在于你的远端仓库之中,你的本地仓库是没有的)。虽然之后可以强制覆盖,但本着省事的原则,建议一开始就不要勾选此选项。
在这里插入图片描述

二、问题分析

我在D:\gitrepository2023目录下clone了项目,同时在本地项目工作目录D:\project\IdeaProjects分别在StudyVC项目下,分别打开git bash。执行git branch 和git branch -a命令。

2.2 git branch命令

git branch 显示当前分支
git branch -a 显示所有分支

在这里插入图片描述
执行git clone命令(见左图)后,我们会默认处于default branch,即main分支下,同时系统也会将origin设置成该远端仓库的标识符当前本地仓库(刚刚clone的)的main分支GitHub远端仓库origin的main分支在内容上是完全相同的。
都有这三个文件:
.gitignore
LICENSE
README.md

.git文件是clone下载时,初始化仓库在本地自动生成的隐藏文件。
与在本地mkdir后git init 类似。

当前本地仓库的main分支:
在这里插入图片描述
GitHub远端仓库origin的main分支:
在这里插入图片描述
本地项目工作目录D:\project\IdeaProjects\StudyVC下(见右图)执行命令显示:当前分支是master;本地仓库的master分支与GitHub远端仓库origin的master分支完全相同的。也就是我们之前在此目录下,执行git push -u origin master命令提交的内容。
在这里插入图片描述
以上情况,和我之前操作后的预期结果,完全一致。见使用git命令行方式提交项目到GitHub

2.3 remote/origin/HEAD ->origin/main

同时我们发现还有个remote/origin/HEAD ->origin/main 分支;origin/HEAD就是一个指针,表示默认分支,在此处指向origin/main,表示远端仓库(origin)的默认分支是main。

三、如何 master to main

如何把提交到Master的内容转移到默认分支main分支。

1:直接把master删除,再把内容重新推送到main上。
2: 把master分支的内容合并到main上,然后再删除本地和远端的master分支。

3.1 重命名当前分支

//git branch -m\M oldbranch  new branch
git branch -m  master  main

有的博主说运行此命令,会使用master的历史记录创建一个名为main的分支。使用该参数-m会将master分支上的所有提交历史记录转移到新的main分支上,因此不会丢失任何内容。

我在git官网中查到了它的用法和描述信息:
git branch -m English
git branch -m 简体中文
在这里插入图片描述
在这里插入图片描述

3.2 删除远程的master分支

// 删除本地分支
git branch -d localBranchName
// 删除远程分支
git push origin --delete remoteBranchName
在这里插入图片描述
可以看到GitHub上,现在只有一个分支main了(见下图)。
在这里插入图片描述

3.2 git pull origin main --allow-unrelated-histories

3.2.1 git push - u origin main

此时如果直接git push - u origin main 会报错
在这里插入图片描述

git提示:在push之前先pull。

error: failed to push some refs to…error: failed to push some refs to如何解决
如何解决error: failed to push some refs to ‘git@github.com:…git pull冲突问题
意思就是你刚开始创建仓库的时候,勾选了这个初始化仓库自动创建READ.ME等文件,现在远程仓库有这个文件,但本地仓库却没有,可能本地还有一些小改动。(所以前文才建议每次创建仓库的时候不要勾选任何选项。)
在这里插入图片描述

3.2.2 git pull origin main --allow-unrelated-histories

我遵循了git提示:在push之前先pull。
执行了git pull命令,此命令基本上就是git fetchgit merge命令的组合体,Git从指定的仓库中抓取内容,然后尝试将其合并进你所在的分支里。
在这里插入图片描述在这里插入图片描述

3.2.3 建议

在进行任何更改之前,请检查您的提交是哪个分支
目前处于哪个分支

3.3 git push -u origin main

3.3.1 git push -u origin main

在这里插入图片描述同时GitHub也检测到了:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

3.3.2 关于git push -u origin master 或 git push - u origin main中的-u参数的权威说明

注意
1、这里的-u 参数,一般在第一次 push的时候使用,相当于建立某个本地分支(这里是master分支)对应的远端分支(orgin/master)的第一次联系。后面再push这个本地分支到远端仓库,就无需再加-u参数,直接执行git push origin master

2、如果这个分支,是git pull下来的,修改后再push,也无需再加-u参数,直接执行git push -u origin master,因为之前已经建立过这个本地分支与对应的远端分支之间的第一次联系pull到本地workspace,联系也会存在,后面再push这个本地分支到远端仓库,就无需再加-u参数,直接执行git push origin master

git push -u origin main情况同理

3、(来自《GitHub入门与实践》中的一些说明)
在这里插入图片描述

2023-12-2 22:08:01 补充 3.3.2

4 D:\project\IdeaProjects\StudyVC和远程仓库origin的main分支

D:\project\IdeaProjects\StudyVC :
在这里插入图片描述
远程仓库origin的main分支:
在这里插入图片描述
现在远端仓库origin的main默认分支的.gitignore、README.md、LICENCE文件同步到了本地的文件夹中;而本地的src文件夹也已经push同步到了远端仓库origin的main分支中。也就是说,本地和远程仓库的文件,经过操作,目前已经完全相同了。

参考资料:

git
RUNOBB-GIT
记Git报错-refusing to merge unrelated histories
refusing to merge unrelated histories的解决方案(本地/远程)综合
git解决push错误failed to push some refs to的解决
github合并master和main
解决Git上传过程中:error: failed to push some refs to 'git@github.com
git分支从master切换到main
github将默认main分支改成master
Github仓库master分支到main分支迁移指南
如何解决error: failed to push some refs to ‘git@github.com:…git pull冲突问题

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值