当前位置: 首页 > news >正文

git操作三- 解决冲突,删除文件,查看版本间更改了什么内容

问题

我本地的main分支有个审批.docx的文档,怎么合并到我本地的seri分支。

涉及命令:

  • git branch
  • git log --oneline --graph
  • git fetch
命令作用能看到提交历史?能看到本地 / 远程关系?
git branch -vv看状态、看同步❌ 不能✅ 能
git log --graph看提交历史、看图✅ 能❌ 不能(不加 --all)

git 名词

英文中文含义
working tree工作区你当前编辑的代码
index暂存区git add 后的区域
tree版本树提交的历史版本
blob文件对象Git 里的文件
changes差异 / 改动不同的地方
名称官方英文作用存放什么生命周期
暂存区Index / Stage提交前的临时存放git add 后的文件会被 git commit 永久提交掉
储藏区Stash临时切走、保存未完成代码未 add、已 add、未提交的所有代码手动 git stash pop 才会恢复

问题分析

本地有两个分支:
• main:包含修改后的 每日临时思考记录/git配置协作者审批.docx
• seri:需要合并 main 分支的这个文档变更

推荐方案:合并 main 到 seri 分支

  1. 切换到 seri 分支
    运行
    git checkout seri

  2. 合并 main 分支到 seri
    运行
    git merge main

•这个命令会把 main 分支的所有提交(包括你修改的 .docx 文件)合并到 seri 分支;
• 如果没有冲突,Git 会自动完成合并;
• 如果有冲突,手动解决后执行 git add 和 git commit 即可。

备选方案:只合并单个文件(如果不想合并全部提交)

  1. 如果你只想把 main 分支的这个文档单独拿到 seri 分支,而不是合并所有提交,可以用 git checkout 提取文件
    运行
    git checkout seri

  2. 从 main 分支检出目标文件(路径要和 git status 里一致)
    运行
    git checkout main – “每日临时思考记录/git配置协作者审批.docx”

  3. 提交到 seri 分支
    运行
    git add “每日临时思考记录/git配置协作者审批.docx”
    git commit -m “从 main 分支合并审批文档到 seri”

扩展

git merge 和 git checkout – file 这两种方式的区别

问题分析

git merge main 的核心逻辑是:将「本地的 main 分支」合并到「当前所在的本地 seri 分支」,和「远端的 main 分支」没有直接关系。
git merge main 的精准含义

• 操作范围:仅在本地仓库内执行,不涉及任何远程仓库(远端 main 分支的内容不会自动参与);
• 合并逻辑:把「本地 main 分支的最新提交」,合并到「你当前 checkout 的分支(这里是 seri)」;
• 类比理解:就像你有两个本地文件夹(main 文件夹、seri 文件夹),git merge main 是把 main 文件夹里的最新修改,同步到 seri 文件夹里。

关键区分:本地 main vs 远端 main

命令合并的分支来源适用场景
git merge main本地 main 分支你已经把远端 main 的内容拉到本地,想把本地 main 的修改合并到本地 seri
git merge origin/main远端 main 分支(origin 是远程仓库别名) 不想先更新本地 main,直接把远端 main 的最新内容合并到本地 seri

确保合并的是「远端最新的 main 内容」到本地 seri,正确步骤是:

  1. 先更新本地 main 分支(拉取远端 main 的最新内容)
    git checkout main
    git pull origin main把远端 main 同步到本地 main
  2. ** 切回 seri 分支**
    git checkout seri
  3. ** 合并本地 main(已同步远端)到 seri**
    git merge main

补充说明(避坑)

  1. 合并前先拉取:如果你的本地 main 分支不是最新的(比如远端 main 有其他人提交的内容),直接 git merge main 只会合并「本地旧的 main 内容」,而非远端最新;
  2. 冲突处理:如果 seri 分支和 main 分支修改了同一个文件(比如你的审批.docx),Git 会提示冲突,你只需要:
  • 打开冲突文件,手动保留需要的内容;
  • 执行 git add 冲突文件 → git commit 完成合并;

总结

  1. git merge main 仅合并本地 main 分支到当前本地 seri 分支,和远端无关;
  2. 若要合并远端 main 到本地 seri,需先 git pull origin main 更新本地 main,再执行 merge;
  3. 核心逻辑:merge 操作的对象是「本地分支」,远程分支需先拉取到本地才能参与合并。

git删除仓库中的文件

本地删除文件 + 提交到 Git,一步到位。

最常用、最推荐的命令(直接删文件 + 提交)

运行:

  • git rm 文件名
  • git commit -m “删除不需要的文件”
  • git push

git rm 文件名
本地文件删掉 + Git 也记录删除
git commit
→ 把删除操作保存成一个版本
git push
→ 把删除同步到远程(GitHub/GitLab/Gitea)

如果你已经手动把文件删了(右键删除)

那就用这个:

  • git add -u
  • git commit -m “删除文件”
  • git push

git add -u 会自动把所有已删除的文件记录到 Git 里

删除文件夹(目录)

  • git rm -r 文件夹名
  • git commit -m “删除文件夹”
  • git push

只想让 Git 不再追踪,但保留本地文件

git rm --cached 文件名

这个不会删你电脑上的文件,只是Git 不再管它。

总结

想彻底删文件:git rm 文件名
已经手动删了:git add -u
删文件夹:git rm -r 文件夹
只取消追踪、保留文件:git rm --cached 文件名

、、、、、、、、、、、、、、、、、、、、、、、

查看某个版本 和 它前一个版本的差异

本地删除文件 + 提交到 Git,一步到位。

最常用:查看具体修改了哪些代码

运行:
git show 版本号

作用

  • 自动对比 这个版本 和 前一个版本
  • 直接显示:改了哪些文件、加了什么、删了什么
    如:git show 6dcceda1f07337eaf0aee6754ccbe55982421e15

只看修改了哪些文件(不看代码细节)

那就用这个:
git show --stat 版本号

输出干净整洁:
几个文件被修改
增加多少行
删除多少行

如果你想看当前最新版本 vs 上一版

git show
不加任何版本号,默认就是当前最新版本 vs 前一个版本

另一个经典对比命令(效果一样)

git diff 版本号^ 版本号

^ 代表前一个版本

git branch -vv

作用:看当前所有分支的同步状态

本地落后?超前?分叉?和远程对没对齐?

什么时候最实用

  • 每天上班第一件事,看哪些分支要同步
  • 想知道自己当前分支能不能 push
  • 想知道本地和远程差几个提交

git log --oneline --graph

作用

看完整的提交树、分叉、合并历史

什么时候用

  • push 被拒绝,查分叉原因
  • 解决冲突后看历史
  • 想知道分支到底发生了什么
  • 排查 Git 问题必用

总结

看详细代码修改:git show 版本号
看修改了哪些文件:git show --stat 版本号
看当前最新版改了啥:git show

终极真理:凡是涉及远程,必须先 fetch。

这一步是 “刷新”!
就像你看网页要刷新,看文件要刷新一样!
只要你想知道:

  • 远程有没有新代码?
  • 我能不能 push?
  • 我要不要 pull?
  • 本地和远程同步了吗?
  • 必须先执行:

你本地的 origin/seri、origin/main 都是 “旧照片”!
只有 git fetch 才能把它变成实时直播!
不 fetch → 你看到的是缓存数据
fetch 后 → 你看到的是服务器真实数据
不 fetch 就操作,等于闭着眼睛开车!一定翻车!

所有操作,都应该按这个顺序:

  1. fetch(刷新)
    git fetch
  2. 查看状态(判断要干嘛)
    git branch -vv或git status
  3. 决定:pull /merge/rebase /push
  4. git fetch 刷新远程状态(必须!)
  5. git branch -vv 看有没有人更新代码
  6. git pull --rebase 有更新就拉下来(没有也可以执行)
  7. 更新,填写代码
  8. git add .
  9. git commit -m “提交”
  10. git push 推上去

本地分支 vs 远程分支
fetch 是刷新
branch -vv 是看同步状态
log --graph 是看历史
能不能 push 只看自己的分支
先 fetch 再操作 = 永不翻车

http://www.cnnetsun.cn/news/2118496.html

相关文章:

  • 五一避坑:我整理了5个冷门景点,人少景美还不贵
  • 1 6.1 进入管理页面(账户 → 家庭 → 在线管理;Edge 打开)
  • 人生希望的具象化的庖丁解牛
  • 甜蜜点狙击:在亚马逊,如何找到“需求”与“独特性”的黄金交叉点
  • 如何在Blender中完美处理3MF格式:3D打印工作流的终极指南
  • 开源AI对话应用chatait-free部署指南:从架构解析到实战配置
  • 如何在PC上完美运行Switch游戏?Ryujinx模拟器深度解析与实战指南
  • RocketMQ面试题
  • 国有企业信息数据库
  • 瑞芯微(EASY EAI)RV1126B OTG切换成U盘模式
  • 2025届学术党必备的六大降AI率平台解析与推荐
  • 阅读APP书源配置终极指南:3分钟开启海量小说世界
  • 智慧农业图像识别 农作物害虫图像识别 玉米虫害识别 卷心菜害虫检测 田间地老虎图像识别 田间虫害快速识别 农作物病虫害预警系统 深度学习YOLO第10376期
  • AnimateAnyone:如何用一张图片让任何人动起来?图像到视频动画终极指南
  • Akagi智能麻将助手:3分钟掌握AI麻将决策分析神器
  • AI Agent如何通过MCP协议连接杠杆预测市场:Dimes Multiply工具详解
  • 大模型推理加速:最优有损推测解码技术解析
  • 时间折叠术:软件测试从业者的效率跃迁与未来应对策略
  • 5分钟让你的Windows电脑变身AirPlay 2接收器:免费跨屏解决方案
  • 八大网盘直链解析工具:告别限速的完整解决方案
  • DragMesh技术:轻量级3D交互生成的核心突破
  • 从零开始掌握JASP:免费开源统计分析软件的5大核心优势
  • AMD Ryzen处理器终极调试工具:SMUDebugTool完整使用指南
  • 3分钟解决网易云音乐NCM格式播放难题:ncmdump工具完全指南
  • AI模型在数据可视化与Web开发中的能力边界测试
  • 球磨机是个啥玩意儿?老张给你唠明白
  • 画面匹配大师 视频片段查原片软件 极致感受 速橙软件-相同视频片段匹配系统
  • Onekey:3分钟免费解锁Steam游戏的终极一键式工具完全指南
  • MSP432P401R驱动HX711压力传感器:从GPIO配置到精准称重的保姆级代码解析
  • 别再只会转圈了!用STM32 HAL库驱动28BYJ-48步进电机做个迷你云台(附完整代码)