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

git切换分支的时候,该分支内容被带到另一被切换分支!!!!

在写代码的时候,因为工作需求,偶然发现,在idea中切换分支的时候,本来develop分支的内容,切换到master的时候,突发发现被改的内容在master里面也存在,大吃一惊!!!

经过一段时间的摸索,我直接上干货,总结原因:

如果你在切换分支时,当前分支的内容被带到了目标分支,这通常是由于以下原因:

  1. 未提交的更改:如果你在切换分支前有未提交的更改(例如文件修改、删除等),Git 会尝试将这些更改"带到"新分支上,因为 Git 默认会保留未提交的更改,以便你继续在新分支上工作。【简单来说就是,你修改了代码,但是没有commit

  2. 更改已经暂存(staged):如果更改已经暂存(通过 git add),切换分支时这些暂存的更改会被“转移”到目标分支。

解决方法:很简单,切换分支之前直接commit代码就行了!!!

当然,如果你不想提交当前分支的更改,但又需要切换到另一个分支,可以使用 git stash 来暂存这些更改。这样,在切换分支时,这些更改就不会影响目标分支。

 Git 的默认行为:

当你切换分支时,如果有未提交的更改,Git 会尝试将这些更改应用到目标分支。如果目标分支与当前分支的更改冲突,Git 会拒绝切换分支。只有当你没有未提交的更改,或者没有冲突时,Git 才允许切换分支。

再讲一个知识点:

默认 git checkout 切换分支时的行为: 当你在当前分支(例如 a 分支)上进行修改(如文件修改、添加文件等)后,如果切换到 b 分支,Git 默认会尝试将这些未提交的更改转移到 b 分支上。如果 ab 分支的文件有冲突,Git 会阻止你切换分支,并要求你先处理这些更改(也就是前面说的先提交或者暂存)。

使用 git checkout 强制切换而不保留更改: 如果你想强制切换到另一个分支(如 b 分支),并不保留当前分支(a 分支)上的未提交更改,可以使用 git checkout 命令的 -- 选项:

git checkout b -- .

git checkout b -- .:这个命令将切换到 b 分支并丢弃当前更改的文件,只要这些更改还没有被提交。-- . 表示“在当前目录下,所有文件的更改都不保留”。 


http://www.mrgr.cn/news/71994.html

相关文章:

  • Python---re模块(正则表达式)
  • 【activiti工作流源码集成】springboot+activiti+mysql+vue+redis工作流审批流集成整合业务绑定表单流程图会签驳回
  • 翼鸥教育:从OceanBase V3.1.4 到 V4.2.1,8套核心集群升级实践
  • android dvr黑屏
  • 高性能Web网关:OpenResty 基础讲解
  • 面试击穿mysql
  • 深入理解 cached plan must not change result type 原理及解决办法
  • 使用Python查询数据库并生成报告的全流程指南
  • Jmeter中的定时器(二)
  • CSMA/CD和CSMA/CA
  • 【代码随想录day28】【C++复健】122.买卖股票的最佳时机II ;376. 摆动序列;53. 最大子序和
  • (67)RLS滤波器用于信道均衡时的判决引导(Decision-Directed)自适应模式的MATLAB仿真
  • rust高级特征
  • 基于微信小程序的养老院管理系统的设计与实现,LW+源码+讲解
  • Qt---双缓冲绘图
  • 【bat】自动生成指定层级文件夹
  • pytorch奇怪错误
  • 数字信号处理Python示例(12)生成Chirp(线性调频)信号
  • 实验27:lcd12864液晶显示实验
  • CAN总线位同步的使用以及总线仲裁规则详解
  • 基于YOLOv5的人群密度检测系统设计与实现
  • 跟着尚硅谷学vue2—进阶版2.0—使用 Vue 脚手架2.0
  • 常用数字器件的描述-时序逻辑器件的描述
  • 类似keepalived的软件还有哪些
  • Docker部署Redis哨兵
  • 在 Service Worker 中caches.put() 和 caches.add()/caches.addAll() 方法他们之间的区别