分支管理提交代码

前言:公司代码需要先放在开发分支上,后面提交的时候再合并到master主分支

开始复现场景:

git branch -a 输出来看,你的本地分支是 develop,而远程仓库中存在两个分支:origin/masterorigin/develop。此外,remotes/origin/HEAD 指向了 origin/master,这表明远程仓库的默认分支是 master

问题分析

你提到想把分支合并到 master 主分支上去,但 git branch 没有显示 master 分支。根据输出信息,可以确认以下几点:

  1. 本地没有 master 分支 :当前只有 develop 分支。
  2. 远程存在 master 分支remotes/origin/master 表明远程仓库中有 master 分支。
  3. 远程默认分支是 masterremotes/origin/HEAD -> origin/master 表明远程仓库的默认分支是 master

解决方案

1️⃣ 创建并切换到本地 master 分支

首先,你需要在本地创建一个 master 分支,并将其与远程的 master 分支关联起来。

bash 复制代码
# 创建并切换到本地 master 分支,跟踪远程 origin/master
git checkout -b master origin/master
2️⃣ develop 分支合并到 master 分支

确保你在 master 分支上,然后将 develop 分支的内容合并进来。

bash 复制代码
bash
深色版本
# 确保你在 master 分支上
git checkout master

# 合并 develop 分支
git merge develop
3️⃣ 解决可能的冲突 (没有冲突的话不需要执行这两条命令)

如果在合并过程中出现冲突,Git 会提示你手动解决这些冲突。解决冲突后,使用以下命令继续合并过程:

csharp 复制代码
# 解决冲突后,添加已修改的文件
git add .

# 继续合并
git commit
4️⃣ 推送更改到远程 master 分支

最后,将合并后的更改推送到远程 master 分支。

perl 复制代码
bash
深色版本
# 推送更改到远程 master 分支
git push origin master

🛠️ 进阶操作:设置默认上游分支

如果你希望以后直接使用 git pullgit push 而不需要每次都指定分支,可以设置默认上游分支:

ini 复制代码
bash
深色版本
# 设置 master 分支的上游为 origin/master
git branch --set-upstream-to=origin/master master

这样,当你在 master 分支上时,可以直接使用 git pullgit push 命令,而不需要额外指定分支名。

报错了

远程仓库 master 分支包含了本地分支没有的更改。因此,Git 拒绝了你的推送请求,以防止丢失远程仓库中的工作。

错误原因

这个错误通常有以下几种可能的原因:

  1. 远程仓库有新的提交 :在你上次拉取(git pull)之后,其他开发者可能已经向远程仓库的 master 分支推送了新的提交。
  2. 非快进式推送 :你的本地 master 分支与远程 master 分支之间的差异无法通过简单的"快进"操作来解决,需要进行合并或变基。

解决方案

1️⃣ 先拉取远程仓库的最新更改

你需要先从远程仓库拉取最新的更改,然后将这些更改合并到你的本地分支中。

bash 复制代码
# 切换到 master 分支
git checkout master

# 从远程仓库拉取最新的更改
git pull origin master

如果 git pull 成功执行,它会自动将远程仓库的更改合并到你的本地分支中。如果有冲突,你需要手动解决这些冲突。

2️⃣ 解决冲突(如有必要)

如果在 git pull 过程中出现冲突,Git 会提示你手动解决这些冲突。解决冲突后,使用以下命令继续合并过程:

csharp 复制代码
# 解决冲突后,添加已修改的文件
git add .

# 继续合并
git commit
3️⃣ 再次尝试推送更改

解决了所有冲突并完成合并后,你可以再次尝试将本地更改推送到远程仓库:

perl 复制代码
# 推送更改到远程 master 分支
git push origin master

还是报错

从你提供的错误信息来看,当前的状态是 MERGING,这表明你在合并过程中遇到了问题,并且还没有完成合并。因此,Git 拒绝了你的推送请求。

错误原因

  1. 合并尚未完成 :你正在进行一个合并操作(可能是之前执行的 git mergegit pull),但还没有解决所有的冲突或完成合并。
  2. 本地分支落后于远程分支:即使解决了合并冲突,本地分支可能仍然落后于远程分支,需要先拉取最新的更改。

解决方案

1️⃣ 检查并完成合并

首先,你需要确保合并操作已经完成。如果存在未解决的冲突,你需要手动解决这些冲突。

查看当前状态,确认是否有未解决的冲突(查看本地和远程 master 分支的差异)
lua 复制代码
git status

如果 git status 提示你的本地分支落后于远程分支(例如 Your branch is behind 'origin/master' by X commits),你需要先拉取最新的更改。

如果有冲突文件,打开这些文件并手动解决冲突

解决冲突后,添加已修改的文件并提交:

csharp 复制代码
# 添加已解决冲突的文件
git add .

# 提交合并
git commit
2️⃣ 拉取远程仓库的最新更改

在完成合并后,再次尝试拉取远程仓库的最新更改,以确保本地分支是最新的。

bash 复制代码
# 切换到 master 分支
git checkout master

# 从远程仓库拉取最新的更改
git pull origin master

如果 git pull 成功执行,它会自动将远程仓库的更改合并到你的本地分支中。如果有冲突,你需要手动解决这些冲突。

3️⃣ 再次尝试推送更改

解决了所有冲突并完成合并后,你可以再次尝试将本地更改推送到远程仓库:

perl 复制代码
# 推送更改到远程 master 分支
git push origin master

我本地如果删除了几个文件再更新到仓库去要怎么办?

你只需要用 git add .git rm 告诉 Git "这些文件是我有意删除的",然后提交并推送到远程仓库即可。Git 会把"删除"也当作一次更改记录下来。


✅ 正确操作步骤(推荐)

1️⃣ 确认你已经删除了文件

你已经在本地手动删除了一些文件(比如用资源管理器或 rm 命令删的)。

2️⃣ 让 Git 检测到这些文件被删除

运行以下命令,Git 会发现哪些文件被删了,并把"删除"操作加入暂存区:

csharp 复制代码
bash
深色版本
git add --all
# 或者简写:
git add .

💡 注意:

虽然 git add . 通常用于"添加新文件",但它也会检测到被删除的文件 ,并自动执行 git rm 的效果。

⚠️ 如果你只用 git commit 而不先 add,Git 不会自动把删除纳入提交。

3️⃣ 提交删除操作
sql 复制代码
bash
深色版本
git commit -m "删除了不再需要的文件:xxx, yyy"
4️⃣ 推送到远程仓库
perl 复制代码
bash
深色版本
git push origin master
# 或者 main,根据你的分支名

✅ 完成!远程仓库也会删除这些文件。

相关推荐
绝无仅有2 小时前
某个互联网大厂的Elasticsearch基础面试题与答案
后端·面试·github
谢尔登4 小时前
【Git】merge 分类
git
NiKo_W4 小时前
Git 版本回退与撤销修改
开发语言·git·安全
Rhys..15 小时前
.gitignore文件的作用及用法
python·github
CoderJia程序员甲17 小时前
GitHub 热榜项目 - 日榜(2025-09-12)
ai·github·开源项目·github热榜
蝎子莱莱爱打怪18 小时前
🚀🚀🚀嗨,一起来开发 开源IM系统呀!
前端·后端·github
semantist@语校19 小时前
第十九篇|东京世界日本语学校的结构数据建模:制度函数、能力矩阵与升学图谱
数据库·人工智能·线性代数·矩阵·prompt·github·数据集
渣渣小码20 小时前
GIT客户端配置支持中文
git·git中文显示
鄃鳕20 小时前
Git 拒绝 pull,本地有未提交的修改
git