Git提交为何包含本地未暂存的文件修改?
问题原因分析
你的核心问题出在提交时使用了自动暂存的参数,而非Git的暂存逻辑本身有问题。
默认情况下,git commit只会提交已经通过git add加入暂存区的内容——也就是你步骤3里添加的包含row2的版本。但如果提交时用了git commit -a(或者git commit --all),Git会自动把所有已追踪文件的工作区修改先暂存,再一起提交,这就导致你未手动暂存的row3也被包含进去了。
再看你步骤5的git status -s输出MM FileA.txt,这个输出的含义是:
- 第一个M:暂存区的文件和仓库HEAD版本有差异(对应你添加
row2的修改) - 第二个M:工作区的文件和暂存区版本有差异(对应你后来添加
row3的修改)
如果用标准的git commit(不带任何自动暂存参数),提交的只会是暂存区里带row2的版本,工作区的row3修改会保留,不会被提交。你可以再试一次这个操作验证。
内容的提问来源于stack exchange,提问作者LikeMyDog_22
相关产品推荐
相关产品推荐

