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

news/2024/11/20 17:27:46/

问题背景

有时候,我们拿到需求,没仔细看当前分支是什么,就开始撸代码了。完成了需求或者写到一半发现开发错分支了。
比如此时新需求代码都在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 实际操作应用 - 代码写错了分支怎么解决


http://www.ppmy.cn/news/34787.html

相关文章

Vue初入,了解Vue的发展与优缺点

作者简介:一名计算机萌新、前来进行学习VUE,让我们一起进步吧。 座右铭:低头赶路,敬事如仪 个人主页:我叫于豆豆吖的主页 前言 从本章开始进行Vue前端的学习,了解Vue的发展,以及背后的故事。 一.vue介…

机试练习Day6-有深度的题目--真题

目录矩阵快速幂快速幂算法代码部分复数的集合优先队列运算符重载结构体构造函数代码部分矩阵快速幂 快速幂算法 这个道理和转二进制很像: 例如:现在要求3的9次方,最关键的是如何表示9,我们可以选择让3乘9次,也就是3 *…

第十四届蓝桥杯三月真题刷题训练——第 20 天

目录 第 1 题:纸张尺寸 问题描述 输入格式 输出格式 样例输入1 样例输出1 样例输入 2 样例输出 2 运行限制 代码: 解析: 第 2 题:最大数字 第 3 题:全排列的价值_递推公式 问题描述 输入格式 输出格式…

MD5加密竟然不安全,应届生表示无法理解?

前言 近日公司的一个应届生问我,他做的一个毕业设计密码是MD5加密存储的,为什么密码我帮他调试的时候,我能猜出来明文是什么? 第六感,是后端研发的第六感! 正文 示例,有个系统,前…

电路设计的一些概念

锁存器的产生 论述1 (转)时序电路,生成触发器,触发器是有使能端的,使能端无效时数据不变,这是触发器的特性。 组合逻辑,由于数据要保持不变,只能通过锁存器来保存。 第一个代码,由于是时序逻…

第二十一天 数据库开发-MySQL

目录 数据库开发-MySQL 前言 1. MySQL概述 1.1 安装 1.2 数据模型 1.3 SQL介绍 1.4 项目开发流程 2. 数据库设计-DDL 2.1 数据库操作 2.2 图形化工具 2.3 表操作 3. 数据库操作-DML 3.1 增加(insert) 3.2 修改(update) 3.3 删除(delete) 数据库开发-MySQL 前言 …

C语言之按位取反~(七十一)

计算机存储数据基本知识计算机中二进制数包括(正数和负数)是以补码形式存储。符号位:补码的最左侧首位是符号位,0表示正数,1表示负数。二进制有三种形式:原码、反码、补码。正数的补码和反码:是…

四级数据库工程师 刷真题错题整理(三)数据库原理

1.数据模型是对现实世界进行抽象的工具,它按算机系统的观点模于提数据库系统中信息表示和操作手段的形式框架,主要用于 DBMS 的实现,是数据库系统的核心和基础。其中,数据操作是对数据间的动态行为。 2.数据库的型是稳定的&#…