> 文章列表 > 代码误写到master分支(或其他分支),此时代码还未提交,如何转移到新建分支?

代码误写到master分支(或其他分支),此时代码还未提交,如何转移到新建分支?

代码误写到master分支(或其他分支),此时代码还未提交,如何转移到新建分支?

问题背景

有时候,我们拿到需求,没仔细看当前分支是什么,就开始撸代码了。完成了需求或者写到一半发现开发错分支了。
比如此时新需求代码都在master分支上,提交必然是不可能的,所有修改还是要在新建分支上进行,最后测试通过,才能合并到master分支。

如果只是修改很少的代码,可以从master分支拷贝出修改的文件,然后放弃所有修改,再新建分支,最后将拷贝的文件覆盖原来想修改的文件。如果已经修改了很多个文件的代码,再这样修改未免有点奔溃了,不过我们可以用下面的方法解决。

这时最理想的方法,就是将改动暂存在本地,然后基于master分支新建一个开发分支如 new_branch ,然后将改动提交到 new_branch;测试通过后再合并到master。

方法一:

通过以下步骤将 master 分支上的修改代码移到一个新的分支上:

  1. 确认当前分支为主分支,确认 (master) 前有 * 星号 * 表示当前分支为主分支。
git branch
  1. 创建一个新分支并切换到新分支,如 new_branch 分支。
git checkout -b new_branch
  1. 最后,将修改的代码添加到暂存区并提交修改的代码 :
git add . //添加到git暂存区
git commit -m "xxxxxx"
git push origin new_branch

如果你需要将其他分支上的修改代码移动到新的分支上,也可以按照上述步骤操作。

方法二:

  1. 首先,使用以下命令将分支本地修改保存到 git 缓存区 ,以备后续使用:
git stash

暂存完毕后执行 git status 会显示不出本地的修改。

  1. 再拉取当前分支最新代码(如果同事在当前分支有提交的话)
git pull
  1. 新建并切换到新分支,如new_branch
git checkout -b new_branch
  1. 接着,将之前暂存本地的修改释放出来应用到 new_branch 分支上:
git stash pop

这时执行 git status 可以看到本地修改又显示出来了。

  1. 最后,正常提交代码到新分支 new_branch :
git add .
git commit -m "xxxxxx"
git push origin new_branch

注意:git stash 命令最好不要经常用,不然很容易忘记啥时候在隐藏空间存了代码。

延伸:git stash pop/apply 区别

git stash pop //应用一次隐藏的更改并将其从堆栈中删除
git stash apply //应用隐藏的更改后保留它们以供将来使用,不会删除

可参考:
Git 实际操作应用 - 代码写错了分支怎么解决