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

Git如何提交更改到其他分支且保留当前分支未提交状态

标准操作流程(推荐)

不要直接携带未提交的改动跨分支切换,用git stash做中转就能实现需求,步骤如下:

  • 停留在master分支时,先把当前所有未提交的改动(含工作区、暂存区、未跟踪的新增文件)存入Git的临时暂存栈,执行命令:git stash push -u -m "temp_changes"。执行完成后运行git status,会看到master工作区完全干净,所有改动已被临时收纳。
  • 切换到目标feature分支:git checkout feature
  • 将刚才临时存储的改动恢复到feature分支的工作区,注意用apply而非pop(避免删除暂存栈里的备份,后续master还要用到):git stash apply stash@{0}。恢复完成后你就能在feature分支看到所有原master上的未提交改动,正常执行git add、git commit把这些改动提交到feature分支即可。
  • feature分支提交完成后,切回master分支:git checkout master
  • 再次把暂存栈里备份的同一份改动恢复到master分支工作区:git stash apply stash@{0}。此时运行git status就能看到所有改动回到了最初的未提交状态,和你切换到feature分支之前完全一致。确认状态无误后,执行git stash drop stash@{0}删除这条临时暂存记录即可,避免暂存栈堆积无用条目。
已经误操作后的补救方案

如果你已经没做暂存,直接带着master的未提交改动切到feature分支、并且把这些改动提交到了feature分支,按以下步骤操作也能还原master上的未提交状态:

  • 先切回master分支:git checkout master
  • 找到你刚才在feature分支上提交这批改动的commit哈希值,执行带不提交参数的拣选命令,把该提交的所有改动直接应用到当前master的工作区,不生成新提交:git cherry-pick -n <对应提交的完整hash/短hash>
  • 命令执行完成后,该提交里的所有改动就会回到master的工作区/暂存区,和你最开始未提交的状态完全一致。如果部分文件被自动放到了暂存区,你可以根据需要执行git restore --staged <文件名>把文件退回工作区,匹配你最初的状态即可。

注意:Git默认会在分支切换时自动携带不冲突的未提交改动,但这种行为不确定性很高,很容易出现冲突、误提交到错误分支的问题,跨分支临时转移改动优先用stash做中转稳定性最高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:27:25