使用git checkout -f切换分支后,master分支未提交的修改去哪了?
核心结论
- 你没有将变更提交到master分支,不存在代码误提交到主干的问题
- 之前未提交的本地变更已经被
git checkout -f命令直接丢弃,无法从git本地记录中找回 - 切回master后无待提交变更,是因为工作区的修改已经被强制清空,当前目录完全匹配
origin/master的提交快照
原理说明
git默认切换分支时会校验工作区未提交的变更,如果变更和目标分支的文件存在冲突,会阻止切换避免用户丢失改动。但加上-f(强制)参数后,git会跳过所有校验逻辑,直接强制覆盖工作区、暂存区的所有未提交改动,将整个项目目录还原成目标分支的最新提交状态。这部分未提交的改动不会被存入任何git提交记录,直接从本地磁盘清除。
后续临时处理方案
在技术主管将计数器文件纳入.gitignore前,你可以通过临时暂存的方式避免每次pull都出现未提交变更提示:
- 执行
git stash临时存储当前未提交的计数器文件改动 - 执行
git pull拉取远程仓库最新代码 - 执行
git stash pop恢复之前暂存的计数器改动,此时不会产生待提交变更提示
内容的提问来源于stack exchange,提问作者user17423815
相关产品推荐
相关产品推荐

