【Git】在错误的分支上写了一堆代码,怎么办?

514 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

1. 背景

情况是这样的,有两个分支,一个是测试服分支dev,一个是当前需求开发分支feat,正常情况下,我们是在feat分支上开发,开发完成部分功能后我们会把feat分支合到dev分支,一直到这里,都是我们工作中每天要做的事情。

现在问题来了,我经常干的一件蠢事,当把feat分支合到dev分支后,是停留在dev分支的,我经常忘了切回feat分支,然后就在dev分支上直接开发,写了一大堆代码,写完后开开心心的做了add和commit

git add .
git commit -m "feat:完成了XXX功能"

准备push到远端的时候,???,我怎么是在dev分支上开发的,又忘了切回feat分支,此刻真想给自己一巴掌。行叭,事已至此,还是得确保代码不被删除的情况下,成功切到feat分支。

2. 解决办法

梳理下当前的情况:

  1. 在dev分支上写了一堆代码
  2. 在dev分支上把代码add和commit

想要的目的:

  1. dev分支上不要这堆代码
  2. 把在dev分支上写的这堆代码移到feat上
  3. 成功移到feat分支上后,再add,commit, push

解决步骤:

  1. dev分支上回撤commit,不回撤add.,执行reset命令
// dev 分支
git reset --soft HEAD^
  1. 这时候我们还不能切到feat分支,需要把这堆代码储藏起来才能切到feat分支, 执行stash命令:
// dev 分支
git stash
  1. stash后,dev分支工作区就没有这堆代码了,这时候可以切到feat分支,执行checkout命令:
// dev分支
git checkout feat
  1. 这时候,就在feat分支上了,再把刚才储藏的代码放出来到feat分支上,执行stash pop命令:
// feat分支
git stash pop
  1. stash pop后,就成功把代码放到feat分支上了,之后再按照正常的commit,push推到远端, 执行以下命令即可:
// feat分支
git commit -m "feat:完成了XXX功能"
git push origin feat

到此:成功解决。

原创文章,希望对你有帮助,也为社区贡献自己的一份力量!喜欢请点赞哦~

作者:前端小小梦

主页:了解更多,点击个人主页