You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行git checkout切换到master时未提交的本地修改为什么未报错自动同步?

Git切换分支未报错且携带未提交修改的原因

Git 设计的分支切换逻辑就是:如果工作区、暂存区的未提交修改和目标分支的对应文件版本不存在冲突,Git 会自动将这些未提交的修改带到目标分支,不会抛出拦截错误,仅会在切换完成后提示存在未提交的修改。

针对该场景的具体逻辑如下:

  • 在master分支提交hello.txt后,创建并切换到new_branch时,两个分支的hello.txt版本完全一致,都是内容为pulkitsharma的提交版本
  • 在new_branch修改hello.txt后未做暂存、提交操作,该修改属于已跟踪文件的未提交变更
  • 切换回master时,master分支的hello.txt版本和切出new_branch时的版本完全相同,修改内容和master分支的文件版本没有冲突,因此Git直接将该修改同步到了master分支的工作区,输出M hello.txt Switched to branch 'master' 完成提示。

什么时候切换分支会触发报错拦截?

只有当未提交修改和目标分支的对应文件版本存在内容冲突时,Git才会抛出错误,要求你先通过提交、储藏、丢弃的方式处理完当前修改后再执行分支切换操作。

操作复现代码

git init
vi hello.txt
git add .
git commit -m "hello.txt added to master branch"
git checkout -b new_branch
vi  hello.txt
git checkout master

内容的提问来源于stack exchange,提问作者Pulkit Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 00:18:04