解决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已难以厘清... ...但我决定不去深究这些细节,因为已想到更完美的解决方案
相关推荐
-
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
随机推荐
- angular或者js怎么确定选中ul中的哪几个li
- javascript prototype的深度探索不是原型继承那么简单第1/3页
- 图解SVN服务器搭建和使用(一)
- javascript二维数组转置实例
- php守护进程 加linux命令nohup实现任务每秒执行一次
- Python中的对象,方法,类,实例,函数用法分析
- 在类库或winform项目中打开另一个winform项目窗体的方法
- 深入解析C++中的构造函数和析构函数
- python集合用法实例分析
- SQL命令大全-中英文对照第1/3页
- JQuery动画与特效实例分析
- JS实现类似百叶窗下拉菜单效果
- Android通过自定义View实现随机验证码
- ASP.NET开发中经常用到10款工具软件介绍
- linux top命令详解与输出结果说明
- 官方推荐react-navigation的具体使用详解
- Java中List add添加不同类型元素的讲解
- vue2.0 如何在hash模式下实现微信分享
- spring容器初始化遇到的死锁问题解决
- 详解JWT token心得与使用实例