如何将Git未提交变更移至新分支并清理master分支
解决Git未提交变更跨分支显示的问题
嘿,这问题我太熟了!咱们一步步来搞定它——核心原因是:未提交/未暂存的变更属于工作区,而不是某个分支,所以你创建新分支后切换回master,这些变更还会留在工作区里。要让变更只留在新分支,同时清理master,有两种靠谱的方式:
方法一:先把变更“寄存”到新分支(更安全,推荐)
这种方式能确保你的未完成工作不会丢失,适合还没确定要不要丢弃变更的情况:
- 先切回你的新分支,把变更暂存并提交(哪怕是未完成的,用WIP标记就行):
git switch your-new-branch-name # 替换成你的新分支名 git add . # 暂存所有变更,也可以选择性添加单个文件 git commit -m "WIP: 未完成的工作,后续继续修改" - 然后切回master分支,这时候你会发现master的工作区已经完全干净了:
git switch master
方法二:直接清理master分支的工作区(适合确定不需要保留master里的变更)
如果你确定master里的这些未提交变更没用了,可以直接恢复master到当前提交的状态:
- 先切回master分支:
git switch master - 恢复所有已被Git追踪的文件到HEAD状态(丢弃未提交的修改):
git restore . - 如果还有新添加的、未被Git追踪的文件(比如新建的文件),需要额外清理:
git clean -nfd # 先预览会被删除的文件,确认没问题再执行下面的命令 git clean -fd # 强制删除未被追踪的文件和目录
小提醒
git restore是Git 2.23+才有的命令,如果你用的旧版本,可以用git checkout -- .替代,但restore更直观,推荐升级Git版本。- 执行
git clean前一定要用-n参数预览,避免误删重要文件!
内容的提问来源于stack exchange,提问作者Muhammad Umer
相关产品推荐
相关产品推荐

