【Git】如何将一个分支上的修改转移到另一个分支

459 阅读1分钟

背景

今天写了一个功能,准备提交代码时突然发现没有切换分支,写在了一个错误的分支上😢,这种酸爽感谁懂。放弃更改切换到新分支功能就要重写,保存更改切换到新分支合并还要回头删除错误分支的提交,想想真是麻烦。平时工作只用到ACPP操作(add、commit、pull、push),有没有什么方式把修改转移到正确的分支呢?答案是可以的,往下看。

命令行操作

思路就是,将更改的内容加入暂存区,通过 git stash 存储起来,切换到正确的分支后再从存储中取出来

将修改的内容加入暂存区

$ git add .

未执行Commit操作时

不要执行commit操作

将修改加入入暂存区后执行stash指令

$ git stash                // 把暂存区修改的内容存储起来
$ git checkout 正确的分支    // 切换到正确的分支
$ git stash pop            // 把存储的内容取出来

图片

已执行Commit操作时

如何已经执行了commit操作,就需要对commit进行撤销,撤销后执行上面操作

$ git reset HEAD^ // 撤回到刚刚commit之前的状态

VS Code可视化操作

未执行Commit操作时

点击按钮【Stash All Changes】将所有更改添加到Stash存储,这一步相当于执行了 git add .git stash 两个命令

图片

输入Stash的名称,以便后面根据名称弹出指定内容

图片

在存储更改内容后 切换到正确的分支,点击【...】-> 【存储】->【弹出存储】

图片

选择对应的存储名称后确定

图片

最后就可以在正确的分支上看到之前的更改内容了,这时就可以正常进行提交了

图片

已执行Commit操作时

如何已经执行了commit操作,同样就需要对commit进行撤销,可以使用命令行

$ git reset HEAD^ // 撤回到刚刚commit之前的状态

也可以借助VS Code插件【Git History】

图片

选择之前的commit记录,选择【Soft】(软重置)会将所有的更改都会保留在暂存区(staging area)中

图片

参考

友情提示

见原文:【Git】如何将一个分支上的修改转移到另一个分支)

本文同步自微信公众号 "程序员小溪" ,这里只是同步,想看及时消息请移步我的公众号,不定时更新我的学习经验。