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

从git branch -a
输出来看,你的本地分支是 develop
,而远程仓库中存在两个分支:origin/master
和 origin/develop
。此外,remotes/origin/HEAD
指向了 origin/master
,这表明远程仓库的默认分支是 master
。
问题分析
你提到想把分支合并到 master
主分支上去,但 git branch
没有显示 master
分支。根据输出信息,可以确认以下几点:
- 本地没有
master
分支 :当前只有develop
分支。 - 远程存在
master
分支 :remotes/origin/master
表明远程仓库中有master
分支。 - 远程默认分支是
master
:remotes/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 pull
和 git push
而不需要每次都指定分支,可以设置默认上游分支:
ini
bash
深色版本
# 设置 master 分支的上游为 origin/master
git branch --set-upstream-to=origin/master master
这样,当你在 master
分支上时,可以直接使用 git pull
和 git push
命令,而不需要额外指定分支名。
报错了

远程仓库 master
分支包含了本地分支没有的更改。因此,Git 拒绝了你的推送请求,以防止丢失远程仓库中的工作。
错误原因
这个错误通常有以下几种可能的原因:
- 远程仓库有新的提交 :在你上次拉取(
git pull
)之后,其他开发者可能已经向远程仓库的master
分支推送了新的提交。 - 非快进式推送 :你的本地
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 拒绝了你的推送请求。
错误原因
- 合并尚未完成 :你正在进行一个合并操作(可能是之前执行的
git merge
或git pull
),但还没有解决所有的冲突或完成合并。 - 本地分支落后于远程分支:即使解决了合并冲突,本地分支可能仍然落后于远程分支,需要先拉取最新的更改。
解决方案
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,根据你的分支名
✅ 完成!远程仓库也会删除这些文件。