解决Git Revert 再次合代码无效问题

目录
  • 背景
  • Demo复现该问题
  • 用Squash方式解决该问题
  • 小结

背景

将开发分支dev合并进主分支main以后,如果发现bug需要回滚代码时,我们常使用git revert完成操作,但是当我们将dev上的bug修复之后想再把它合进main却会发现,dev上的功能代码合不进去了,原因是这些功能代码的commit已经在main分支上了(虽然被revert了,但仍在),所以git会拒绝合进重复的commit。

本人最近就遇到了这种问题场景,查阅网上资料推荐的做法一般是把main之前的revert再revert掉然后合dev,但是实际操作过程中却发生了如下错误:

不明就里,估计是因为多人协作导致main分支日新月异,revert操作产生了不可描述的冲突,翻看长串的git log已难以厘清... ...但我决定不去深究这些细节,因为已想到更完美的解决方案

(0)

相关推荐

  • git revert和git reset的区别详解

    git revert和git reset的区别 git revert 是生成一个新的提交来撤销某次提交,此次提交之前的commit都会被保留 git reset 是回到某次提交,提交及之前的commit都会被保留,但是此次之后的修改都会被退回到暂存区 具体一个例子,假设有三个commit, git st: commit3: add test3.c commit2: add test2.c commit1: add test1.c 当执行git revert HEAD~1时, commit2被撤销

  • Git远程仓库配置SSH的实现(以github为例)

    目录 1. 设置本地git账户邮箱和用户名 2. 生成新的SSH密钥 3. 将SSH公钥添加至Github账户 4. 验证SSH Key 1. 设置本地git账户邮箱和用户名 输入命令git config --global user.name "Git账号"以及git config --global user.email "Git邮箱". 输入命令git config --global --list,查看配置是否正确. 2. 生成新的SSH密钥 输入命令ssh-ke

  • 45个GIT经典操作场景使用详解

    目录 正文 我刚才提交了什么? 我的提交信息(commit message)写错了 我提交(commit)里的用户名和邮箱不对 我想从一个提交(commit)里移除一个文件 我想删除我的的最后一次提交(commit) 删除任意提交(commit) 我尝试推一个修正后的提交(amended commit)到远程,但是报错: 我意外的做了一次硬重置(hard reset),我想找回我的内容 暂存(Staging) 我需要把暂存的内容添加到上一次的提交(commit) 我想要暂存一个新文件的一部分,而

  • Git获取本地仓库及基础操作指令总结

    目录 一.Git获取本地仓库 二.Git基础操作指令 1.查看修改的状态(status) 2.添加工作区到暂存区(add) 3.提交暂存区到本地仓库(commit) 4.查看提交日志(log) 5.版本回退 6.添加文件至忽略列表 知识点补充 一.Git获取本地仓库 要使用Git对我们的代码进行版本控制,首先需要获得本地仓库 1.在电脑任意的磁盘位置创建一个空目录(例如test)作为我们的本地Git仓库 2.进入这个目录中,点击右键打开Git bash窗口 3.执行命令git init 4.如果

  • Git恢复之前版本的两种方法reset、revert(图文详解)

    一.问题描述 在利用github实现多人合作程序开发的过程中,我们有时会出现错误提交的情况,此时我们希望能撤销提交操作,让程序回到提交前的样子,本文总结了两种解决方法:回退(reset).反做(revert). 二.背景知识 git的版本管理,及HEAD的理解 使用git的每次提交,Git都会自动把它们串成一条时间线,这条时间线就是一个分支.如果没有新建分支,那么只有一条时间线,即只有一个分支,在Git里,这个分支叫主分支,即master分支.有一个HEAD指针指向当前分支(只有一个分支的情况下

  • Git撤销&回滚操作(git reset 和 get revert)

    git的工作流 工作区:即自己当前分支所修改的代码,git add xx 之前的!不包括 git add xx 和 git commit xxx 之后的. 暂存区:已经 git add xxx 进去,且未 git commit xxx 的. 本地分支:已经git commit -m xxx 提交到本地分支的. 代码回滚 在上传代码到远程仓库的时候,不免会出现问题,任何过程都有可能要回滚代码: 1.在工作区的代码 git checkout -- a.txt # 丢弃某个文件,或者 git chec

  • 解决Git Revert 再次合代码无效问题

    目录 背景 Demo复现该问题 用Squash方式解决该问题 小结 背景 将开发分支dev合并进主分支main以后,如果发现bug需要回滚代码时,我们常使用git revert完成操作,但是当我们将dev上的bug修复之后想再把它合进main却会发现,dev上的功能代码合不进去了,原因是这些功能代码的commit已经在main分支上了(虽然被revert了,但仍在),所以git会拒绝合进重复的commit. 本人最近就遇到了这种问题场景,查阅网上资料推荐的做法一般是把main之前的revert再

  • IDEA中解决 git pull 冲突的方法

    0.事先准备. 1)把远程仓库的README.md内容改写为bbb(原先为aaa). 2)本地仓库的README.md内容改写为ccc(原先也为aaa). 以此来模仿代码冲突. 1.先commit 再pull pull的时候会提示有冲突,需要你进行手动merge Accept Yours 就是直接选取本地的代码,覆盖掉远程仓库的 Accept Theirs 是直接选取远程仓库的,覆盖掉自己本地的 我们选择Merge,自己手动行进选择.修改. 这里左边部分是你本地仓库的代码,右边部分是远程仓库的代

  • git rebase -i合并多次提交的实现

    简介 在日常开发中,代码变更比较频繁,有时候想让前几次提交的合并为一次提交,这里可以使用git rebase -i 命令来完成,当然,git rebase命令不仅仅用于合并提交,它还有许多用处,比如可以使用git rebase onto将某一段commit粘贴到另一个分支上等等,这里主要介绍合并提交. 命令介绍 rebase为变基 git rebase -i 命令可以压缩合并多次提交 格式:git rebase -i [startpoint] [endpoint] 其中-i的意思是–intera

  • git clone下来的代码如何放在指定路径

    今天从github上clone了代码,最后出来形如: 但是话说我的东西下载到哪里去了呢????摸不着头脑,然后百度之,发现一般会放在命令行对应的路径下,也就是 win + R > cmd 查看命令行地址: 然后去此路径下寻找之,果然在这里. 那么,如何才能clone到自己指定的路径下呢?百度之得如下说法: git clone https://github.com/jquery/jquery.git e:/myJQuery/ 以上命令行的结尾,指定你想要的目录. git clone克隆或下载一个仓

  • 解决Android popupWindow设置背景透明度无效的问题

    有的时候当我们使用popwindow时将当前的activity当做View传给其他fragment使用时会导致我们设置背景变暗效果失效,导致这个原因的问题是因为我们传view后当弹出popupwindw的时候已经不再当前的activity了,所以会显示无效 因此在设置的时候我们这样处理: public void backgroundAlpha(float bgAlpha) { //MApp.getInstance().getMainActivity()就是你想要点击时要显示的主activity

  • 彻底解决IDEA中SpringBoot热部署无效的问题(推荐)

    开启SpringBoot热部署,首先得在pom.xml中引入依赖 <!--SpringBoot 热部署依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> 但

  • 解决git 提交后中文字符会乱码的问题

    最近发生那了一件怪事,当然菜鸡经常碰见怪事 本来一个.properties文件在idea里面commit的时候看了一下diff,没发现异常,但是提交到gitlab上发现.properties的所有中文字符都变成了 \xxxx 的ascii的编码. 然后我在idea的show history中查看和上一版本的差异,发现这些中文字符没问题??!! 然后就是一顿的百度,bing 最后发现设置里面 transparent native-to-ascii conversion是选中的 然后网上有人这样解释

  • 使用git命令上传代码

    利用git将本地代码提交到远程服务器一般分为如下5个步骤: 一.查看当前文件的状态 使用git status命令可以查看有那些文件进行了修改,一般有下面几个状态: 1.Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged. 2.Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 3.deleted: 文件已删除,本地删除,服务器上还没有删除. 示例如下: 打开git bash客户端,然后输入g

  • 解决Git Bash中文乱码的问题

    方法一 一.桌面右击,点击“Git Bash Here” 二.在弹出的黑窗口,右击,选择“options” 三.在弹出的窗口,选择“Text”,修改如下值后,先点击“Apply”,再点击“Save” 四.关闭窗口,重现打开“Git Bash”,再次输入命令,发现乱码已经解决 方法二 git bash命令设置支持中文字符 在git bash输入如下命令: git config --global gui.encoding utf-8 git config --global i18n.commiten

随机推荐