平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“Git上有更新而本地无更新时的解决过程”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
问题分析
- 分支名称不匹配:你尝试推送到
main分支,但你当前在master分支上 - 远程仓库有新内容:远程仓库包含你本地没有的提交,需先拉取
解决方案
方法1:继续采用 master 分支
# 1. 先拉取远程更改
git pull origin master
# 2. 如果有冲突,解决冲突后提交
# (如果没有冲突,会自动合并)
# 3. 推送到远程
git push origin master
方法2:如果远程仓库采用 main 分支
# 1. 查看所有分支
git branch -a
# 2. 如果远程有main分支,切换到main
git checkout main
# 3. 拉取最新代码
git pull origin main
# 4. 推送
git push origin main
方法3:将 master 重命名为 main(如果需)
# 1. 重命名本地分支
git branch -m master main
# 2. 拉取远程main分支的内容(如果存在)
git pull origin main --allow-unrelated-histories
# 3. 推送并设置上游
git push -u origin main
建议操作
基于你的情况,建议先执行:
# 查看远程分支情况
git remote show origin
# 拉取并合并远程master分支
git pull origin master
# 推送
git push origin master
如果拉取时出现冲突,需:
- 手动解决冲突文件
git add .git commit -m "解决冲突"git push origin master
远程仓库有本地没有的更新,需先拉取再推送。按以下步骤解决:
1. 先拉取远程更新
git pull origin master
2. 可能出现的情况
情况A:自动合并成功
落到代码里,如果看到类似 “Merge made by the ‘recursive’ strategy” 的消息,说明自动合同时成功,直接推送:
git push origin master
情况B:出现合并冲突
若出现 “CONFLICT” 提示,需:
- 查看冲突文件:
git status
从实现思路看,打开冲突文件,手动解决冲突(冲突部分会有
<<<<<<<,=======,>>>>>>>标记)解决后添加文件:
git add .
- 提交合并:
git commit -m "合并远程更新"
- 推送:
git push origin master
3. 如果不想合并历史(强制推送,慎用!)
警告:这会覆盖远程仓库的内容,只在确定远程内容能够丢弃时采用:
git push -f origin master
安全的替代方案
如果想先查看远程有什么更新:
# 获取远程更新但不合并
git fetch origin master
# 查看差异
git log HEAD..origin/master --oneline
# 如果确认要合并
git merge origin/master
# 推送
git push origin master
建议:
先执行 git pull origin master,这是最标准的解决方案
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多兼容脚本之家。
- vscode更改代码git没有更新问题及解决
- git-github 子模块仓库更新(git submodule)及git中submodule子模块的添加、采用和删除操作
- 采用Git向GitHub上传更新内容
- window设置任务计划定时执行 git 更新(git pull)同时隐藏运行cmd
- 借助PyCharm操作Github(仓库新建、更新,代码回滚)