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

GitLab如何将本地master的未提交更改推送到正确Register分支

操作方案

你当前所有改动都停留在master分支的工作区,尚未产生任何提交记录,不会污染master分支,按以下步骤操作即可零风险把改动转移到目标Register分支:

方案1:stash暂存转移(推荐,零出错概率)

这个方案不管本地分支有没有版本差异都能用,是最稳妥的路径,命令行和SourceTree都能操作:

  • 暂存当前所有改动:
    命令行在仓库根目录执行:
    git stash push -u -m "临时存储误写在master的开发改动"
    必须加-u参数,否则新增的未跟踪文件不会被纳入暂存,会残留或丢失。用SourceTree操作的话,点击顶部工具栏的「贮藏」按钮,勾选「贮藏所有未跟踪文件」选项,填写备注后确认即可。执行完这步本地master工作区会回到和远程master完全一致的干净状态,没有任何改动残留。
  • 切换到目标Register分支:
    命令行执行 git checkout Register,或者在SourceTree左侧分支列表双击Register分支,确认当前分支切换正确。
  • 恢复暂存的改动:
    命令行执行 git stash pop,SourceTree里找到左侧贮藏列表里刚存的那条记录,右键选择「应用贮藏」即可。所有之前修改的跟踪文件、新增的未跟踪文件会原封不动还原到Register分支的工作区。
  • 正常提交推送:
    确认文件改动无误后,按平时的流程add、commit,再push到远程Register分支就完成了,全程不会向master分支写入任何提交。

方案2:直接切换分支(操作更快,适合无文件冲突场景)

因为你还没在master提交改动,只要修改的文件在master和Register分支之间没有版本差异,Git允许你直接带着工作区改动切分支:

  • 直接执行 git checkout Register,或者在SourceTree里双击切换到Register分支
  • 切换完成后你会发现所有工作区改动(包括未跟踪文件)都保留在当前分支,直接正常提交推送即可。

注意:如果切分支时Git提示存在文件冲突、改动可能被覆盖,不要加参数强制切换,立刻退回用方案1操作,避免文件丢失。

关键避坑点

  • 只要不在当前master分支执行commit操作,就不会产生任何污染master的提交记录,完全不用担心误推故障
  • 执行stash操作时务必确认勾选/加参数包含未跟踪文件,避免新增文件丢失
  • 恢复改动后先执行git status确认当前分支为Register、改动文件列表和你之前的修改一致,再执行提交操作

内容的提问来源于stack exchange,提问作者Anilkumar iOS Developer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 20:24:27