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

使用Git时文件系统表现及未提交修改跨分支可见原理咨询

Git未提交修改跨分支可见、提交后消失的底层逻辑

要搞懂这个问题,得先明白Git的三个核心区域:

  • 工作区:就是你本地电脑上能直接打开编辑的文件目录,是日常操作的地方
  • 暂存区(索引):Git用来临时存放待提交修改的“中转站”,介于工作区和版本库之间
  • 版本库:Git真正存储所有提交历史、分支快照的核心区域,所有已提交的修改都存在这里

未提交修改跨分支可见的原因

当你在feature分支修改文件但没做git commit(哪怕做了git add但没提交),这个修改只停留在工作区或者工作区+暂存区,根本没进入版本库的分支快照里。

这时候切换到master分支,Git会做两件事:

  1. 从版本库取出master分支当前的提交快照
  2. 对比这个快照和你当前工作区的文件,如果没有冲突(比如master和你未提交的修改没改同一个文件的同一部分),Git不会覆盖工作区的内容——它默认你还在处理这个修改,不想弄丢你的工作成果。

所以不管切到哪个分支,只要修改没提交,工作区的改动就会保留,你自然能看到。

提交后修改消失的原因

当你在feature分支执行git commit后,Git会把暂存区的内容打包成一个提交对象,并让feature分支的指针指向这个新的提交。这时候,你的修改已经被正式存入版本库的feature分支专属快照里了。

当你切回master分支时,Git会直接从版本库取出master分支当前的提交快照,把工作区的所有文件替换成这个快照里的内容——因为master分支的快照还是你创建feature时的状态,完全没包含feature分支的提交修改,所以你就看不到那个改动了。

额外补充:冲突场景

如果你的未提交修改和目标分支的快照内容有冲突(比如两个分支改了同一个文件的同一行),Git会拒绝切换分支,提示你先提交或暂存修改,这也是为了防止你的未提交工作被覆盖或混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 12:03:11