执行git commit后,“未暂存变更”中的文件为何消失?
Git提交指定文件时的行为解析
当你执行git commit -m "..." a.txt时,这个命令的特殊行为导致了未暂存变更的消失:
- 不同于不带文件名的
git commit(仅提交已暂存的内容),在commit后指定具体文件名时,Git会自动先执行一次git add a.txt操作,把该文件当前工作区的最新版本重新暂存,覆盖之前暂存区里的旧版本。 - 这一步操作后,工作区的a.txt和暂存区的内容完全一致,所以原本的“未暂存变更”就消失了。
- 随后Git将更新后的暂存版本提交到仓库,暂存区的内容被清空,最终
git status里两个区域的a.txt记录都消失了。 - 正因为提交的是工作区最后修改的版本,所以
git show HEAD:a.txt会显示你最后修改的内容。
如果执行的是git commit -m "..."(不指定文件名),则只会提交之前git add的版本,工作区后续的修改会保留在“未暂存变更”区域。
内容的提问来源于stack exchange,提问作者hipparch
相关产品推荐
相关产品推荐

