首页 > 其他分享 >在错误的分支开发了代码

在错误的分支开发了代码

时间:2024-06-07 15:30:55浏览次数:19  
标签:功能 git 错误 代码 命令 提交 我们 分支

文章目录

在错误的分支开发了新功能处理方法

整理自:https://segmentfault.com/a/1190000023924418

1. 新功能还没有在本地commit提交

在这种情况下我们可以在当前分支下使用:

git stash

这个命令表示把我们当前修改的内容暂存起来,然后我们的工作区就恢复到在没有开发新功能之前的样子。

这个时候我们需要切换到正确的工作分支,然后运行命令:

git stash apply

这个命令表示把我们之前暂存的内容,应用到当前分支。这样我们就相当于把修改的内容从一个分支移动到了另一个分支。

2. 新功能已经在本地提交了,但是还没有push到远程仓库

如果新开发的功能已经在本地提交了,但是我们开发的这个分支是一个错误的分支。这个时候根据情况的不同,可以有两种处理的方式。

2.1 新的功能需要添加在一个新的分支

首先我们需要知道在我们添加新功能之前,当前分支处于哪一个提交。可以运行命令:

git log --oneline

查看当前分支的提交,可以看到有以下内容的输出:

085095f (HEAD -> master) update 5
47e52ae update 3
14fefac update 2
fd01444 add README.md
3c76ad1 init

找到我们添加新功能时,当前分支所处的提交。假如是fd01444,那么我们接下来要做的操作就是将HEAD指针指向fd01444,也就是把我们当前分支已提交的内容重置到我们开发新功能之前的样子。我们需要运行下面的命令:

git reset fd01444 # fd01444是某次提交的hash值

如果没有指明重置的模式的话,默认会使用--mixed模式,这样的话我们在fd01444这次提交之后的所有提交都会被重置为没有提交的状态。接下来我们需要把这些新开发的功能迁移到一个新的分支。这时候我们可以使用下面的命令进行操作:

git checkout -b <newbranch>

这样我们就创建了一个新的分支,并且把新添加的功能也都迁移了过去,接下来就是常规的添加和提交操作了。

2.2 新功能需要添加在另一个分支上

如果我们需要把当前添加的新功能迁移到另一个已经存在的分支,那么我们需要做的前几个步骤跟上面的操作是一样的:

git log --oneline # 查找新功能开发之前的提交
git reset <commit hash> # 将当前分支重置到新功能开发之前的提交

接下来我们现在的状态就回到了新功能还没有提交的状态,那么就可以继续使用git stash相关的命令去操作了。

我们还有另外一个方法也能够将已提交到当前分支的功能添加到另一个分支上,那就是使用git cherry-pick命令。首先我们还是先用git log --oneline查找当前已提交的功能的hash值,然后切换到目标分支,运行命令:

git cherry-pick <commit hash>

这样就把我们在另一个分支开发的功能,添加到我们想要的分支了。如果有冲突的话,需要手动处理一下冲突。然后我们回到最初的分支,再次运行git reset <commit hash>命令,把已提交的内容进行重置,然后运行命令:

git checkout -- .

把当前分支没有添加到暂存区的内容都清除掉,这样也可以达到我们上面所说的,把新功能添加到另一个分支的目的。

3. 新功能已经在本地提交了,且push到了远程仓库

第三种情况就是,我们已经把新开发的功能push到远程的仓库了,但是我们忽然发现新功能不应该在这个分支开发,我们这个时候应该怎么办呢?

首先我们应该保持当前的工作区是没有修改的,是一个干净的状态。不然使用撤销命令的时候会提示你需要把当前的文件内容变更先提交或者生成快照。当我们的工作区的状态是干净的时候,我们就可以进行撤销操作了。

首先需要知道我们应该撤销那一次提交的状态。使用git log --oneline查看要撤销的提交的索引,然后运行下面的命令:

git revert <commit>

这个时候命令运行的终端会进入编辑器模式,让你填写提交的信息。当然你也可以使用参数--no-edit这样就不会在进行撤销操作的时候打开编辑模式了。

如果需要撤销的提交比较多的话,我们可以使用..表示一个提交记录的范围。比如c1..c2就表示c2的可达提交,且排除c1的可达提交。所谓可达的提交指的是:提交本身及其祖先链中提交的集合

我们可以举个例子:

... a - b - c - d - HEAD

如果上面表示的是某个分支的提交记录,那么对于b..d表示的就是c d这两个提交,对于a..d表示的就是b c d这三个提交。如果大家想了解更多相关的内容,可以在git-rev-list这里深入的学习一下。

所以我们如果想快速的撤销一段范围的提交的话,可以运行类似下面这样的命令:

git revert 54dc134..a72d612 --no-edit

上述命令的54dc134就表示c1a72d612就表示c2--no-edit表明我们在运行撤销操作的时候不打开编辑模式。

我们如果需要对远程的分支进行撤销的话,首先考虑的就是使用git revert命令,因为git revert命令不会修改历史的提交记录,只是在原来的提交基础上添加新的提交,所以不会造成代码的丢失。在多人合作的情况下使用git revert命令撤销push到远程的操作还是很有必要的。

标签:功能,git,错误,代码,命令,提交,我们,分支
From: https://blog.csdn.net/Orzak/article/details/139420934

相关文章

  • 免费,C++蓝桥杯比赛历年真题--第14届蓝桥杯省赛真题(含答案解析和代码)
    C++蓝桥杯比赛历年真题–第14届蓝桥杯省赛真题一、选择题答案:A解析:C++中bool类型与char类型一样,都需要1byte。一些其他类型的占用字节数:short:2byte,int:4byte,longlong:8byte,double:8byte,故答案为A。答案:C解析:A中结构体中可以定义成员变量,也可以定义只有该结......
  • Diffusers代码学习: IP-Adapter(续)
    但是IP-Adapter不仅可以通过文生图的方式,也可以通过图生图的方式生成目标图片,就无需使用提示词。只不过同上一篇所述,底层的逻辑和图生图是完全不同的。# 以下代码为程序运行进行设置,使用图生图的自动管道,importosos.environ["HF_ENDPOINT"]="https://hf-mirror.com" ......
  • React Native:尝试使用手势处理使文本组件可拖动时出现渲染错误
    我正在ReactNative应用程序中开发一项照片编辑功能,用户可在其中添加可拖动的文本覆盖。我使用钩子来管理文本块的位置,并通过手势处理来更新它们。但是,当我尝试在手势过程中更新这些文本元素的位置(例如拖动)时、我遇到了一个呈现错误:"呈现的钩子比上一次呈现时多。我怀......
  • 单个python文件代码的车牌检测系统 使用pyqt做界面进行车牌检测,可以保存结果到excel文
    融合了hyperlpr3和opencv来检测车牌通过图片检测车牌的系统,使用了pyqt和hyperlpr3结合来进行检测,可以保存检测的结果到excel文件 亲自测试修改代码,运行正常并且不依赖百度网络api,纯本地运行,融合了2个车牌检测模型,第一个模型使用opencv来模糊图像,然后进行边缘检测和......
  • 代码高手的过节秘籍:CodeArt Snap帮写代码,灵感弹指间实现
    本文分享自华为云社区《【端午特辑】代码高手的过节秘籍:CodeArtSnap帮写代码,灵感弹指间实现》,作者:华为云社区精选。端午将至,粽叶飘香,你却还在为一行行代码头疼?与bug缠斗不休?现在,基于盘古大模型技术打造的华为云智能开发助手CodeArtsSnap, 一键生成高效代码,精准解决技术难题,让......
  • @firebase/app-check: FirebaseError: AppCheck: ReCAPTCHA 错误
    我在我的javascript网络应用程序中实施了AppCheckreCAPTCHAEnterprise流程。我遵循了文档中提到的所有步骤。在Firebase控制台中启用AppCheck,注册Web应用程序,并在GCP控制台中启用reCAPTCHAEnterpriseAPI。创建网站密钥,并在Firebase应用程序检查控制台中添加该......
  • 代码随想录算法训练营第七天 | 四数之和、赎金信、三数之和、四数之和2
    代码随想录算法训练营第七天383赎金信https://leetcode.cn/problems/ransom-note/submissions/537782865/383赎金信代码随想录https://programmercarl.com/0383.赎金信.html#思路四数之和2https://leetcode.cn/problems/4sum-ii/四数之和2代码随想录https://programmerca......
  • 代码随想录算法训练营第八天 | 字符串:344反转字符串、
    反转字符串https://leetcode.cn/problems/reverse-string/反转字符串代码随想录https://programmercarl.com/0344.反转字符串.html#算法公开课反转字符串题目编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外......
  • CUBEMX生成freertos代码编译时报错
    按cubemx配置freertos一步步来的,结果发现编译时有151个报错,情况如下SYS配置freertos配置编译后报错使用编译器5,6,6.19都报错,有没有大佬知道解决办法......
  • CodeSmith 代码生成器
    在上一篇我们已经用PowerDesigner创建好了需要的测试数据库,下面就可以开始用它完成批量代码生成的工作啦.下面我会一步步的解释如何用CodeSmith实现预期的结果的,事先声明一下,在此只做一个简单的Demo,并不详细的讲解CodeSmith各个强大的功能,有兴趣的朋友可以打开CodeSmith的帮......