背景
今天写了一个功能,准备提交代码时突然发现没有切换分支,写在了一个错误的分支上😢,这种酸爽感谁懂。放弃更改切换到新分支功能就要重写,保存更改切换到新分支合并还要回头删除错误分支的提交,想想真是麻烦。平时工作只用到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)中
参考
友情提示
本文同步自微信公众号 "程序员小溪" ,这里只是同步,想看及时消息请移步我的公众号,不定时更新我的学习经验。