git rebase 成功之后撤销的操作方法_相关技巧

来源:脚本之家  责任编辑:小易  

git rebase 不会取回代码 要用git fetch先取回,git rebase 是合并代码。(1)首先用git fetch返回服务器上的代码(2)首先用git rebase origin/master 合并(3)如果发生冲突了会提示,然后可以使用git diff查看冲突,在手工改掉冲突,在用git add‘文件名’添加修改后文件,最后用git rebase-continue继续没完成的合并(4)最后就可以用git push 更新到服务器上去。转自:http://blog.chinaunix.net/uid-26952464-id-3352144.htmlGit Community Book 中文版书上,摘录如下:一、基本git rebase用于把一个分支的修改合并到当前分支。假设你现在基于远程分支"origin",创建一个叫"mywork"的分支。git checkout-b mywork origin假设远程分支"origin"已经有了2个提交,如图现在我们在这个分支做一些修改,然后生成两个提交(commit).vi file.txtgit commitvi otherfile.txtgit commit但是与此同时,有些人也在"origin"分支上做了一些修改并且做了提交了.这就意味着"origin"和"mywork"这两个分支各自"前进"了,它们之间"分叉"了。在这里,你可以用"pull"命令把"origin"分支上的修改拉下来并且和你的修改合并;结果看起来就像一个新的"合并的提交"(merge commit):但是,如果你想让"mywork"分支历史看起来像没有经过任何合并一样,你也许可以用 git rebase:git checkout myworkgit rebase origin这些命令会把你的"mywork"分支里的每个提交(commit)取消掉,并且把它们临时保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把"mywork"分支更新为最新的"origin"分支,最后把保存的这些补丁应用到"mywork"分支上。当'mywork'分支更新之后,它会指向这些新创建的提交(commit),而那些老的提交会被丢弃。如果运行垃圾收集命令(pruning garbage collection),这些被丢弃的提交就会删除.(请查看 git gc)二、解决冲突在rebase的过程中,也许会出现冲突(conflict).在这种情况,Git会停止rebase并会让你去解决 冲突;在解决完冲突后,用"git-add"命令去更新这些内容的索引(index),然后,你无需执行 git-commit,只要执行:git rebase-continue这样git会继续应用(apply)余下的补丁。在任何时候,你可以用-abort参数来终止rebase的行动,并且"mywork"分支会回到rebase开始前的状态。git rebase-abort三、git rebase和gitmerge的区别现在我们可以看一下用合并(merge)和用rebase所产生的历史的区别:当我们使用Git log来参看commit时,其commit的顺序也有所不同。假设C3提交于9:00AM,C5提交于10:00AM,C4提交于11:00AM,C6提交于12:00AM,对于使用git merge来合并所看到的commit的顺序(从新到旧)是:C7C6,C4,C5,C3,C2,C1对于使用git rebase来合并所看到的commit的顺序(从新到旧)是:C7C6‘,C5',C4,C3,C2,C1因为C6'提交只是C6提交的克隆,C5'提交只是C5提交的克隆,从用户的角度看使用git rebase来合并后所看到的commit的顺序(从新到旧)是:C7C6,C5,C4,C3,C2,C1参考资料:http://www.cnblogs.com/kym/archive/2010/08/12/1797937.htmlgitrebase小计(转)git rebase,顾名思义,就是重新定义(re)起点(base)的作用,即重新定义分支的版本库状态。要搞清楚这个东西,要先看看版本库状态切换的两种情况:我们知道,在某个分支上,我们可以通过git reset,实现将当前分支切换到本分支以前的任何一个版本状态,即所谓的“回溯”。即实现了本分支的“后悔药”。也即版本控制系统的初衷。还有另一种情况,当我们的项目有多个分支的时候。我们除了在本地开发的时候可能会“回溯”外,也常常会将和自己并行开发的别人的分支修改添加到自己本地来。这种情况下很常见。作为项目管理员,肯定会不断的合并各个子项目的补丁,并将最新版本推送到公共版本库,而作为开发人员之一,提交自己的补丁之后,往往需要将自己的工作更新到最新的版本库,也就是说把别的分支的工作包含进来。举个例子来说吧!假设我们的项目初期只有一个master分支,然后分支上作过两次提交。这个时候系统只有一个master分支,他的分支历史如下:master0(初始化后的版本)vmaster1(第一次提交后的版本)vmaster2(第二次提交后的版本)这个时候,我们可以通过git reset将master分支(工作目录、工作缓存或者是版本库)切换到master1或者master0版本,这就是前面所说的第一种情况。假设我们这里把master分支通过git reset回溯到了master1状态。那么这个时候系统仍然只有一个master分支,分支的历史如下:master0(初始化后的版本)vmaster1(第一次提交后的版本)然后,我们在这里以master1为起点,创建了另一个分支test。那么对于test分支来说,他的第一个版本test0就和master1是同一个版本,此时项目的分支历史如下:master0(初始化后的版本)vmaster1(第一次提交后的版本)=test0(test分支,初始化自master分支master1状态)这个时候,我们分别对master分支、test分支作两次提交,此时版本库应该成了这个样子:master0(初始化后的版本)vmaster1=test0=>test1=>test2vmaster2=>master3这个时候,通过第一种gitreset的方式,可以将master分支的当前状态(master3)回溯到master分支的master0、master1、master2状态。也可已将test分支当前状态(test2)回溯到test分支的test0、test1状态,以及test分支的父分支master的master0、master1状态。那么。如果我要让test分支从test0到test2之间所有的改变都添加到master分支来,使得master分支包含test分支的所有修改。这个时候就要用到git rebase了。首先,我们切换到master分支,然后运行下面的命令,即可实现我们的要求:git rebase test这个时候,git做了些什么呢?先将test分支的代码checkout出来,作为工作目录然后将master分支从test分支创建起的所有改变的补丁,依次打上。如果打补丁的过程没问题,rebase就搞定了如果打补丁的时候出现了问题,就会提示你处理冲突。处理好了,可以运行git rebase –continue继续直到完成如果你不想处理,你还是有两个选择,一个是放弃rebase过程(运行git rebase –abort),另一个是直接用test分支的取代当前分支的(git rebase –skip)www.zgxue.com防采集请勿采集本网。

rebase在git中是一个非常有魅力的命令,使用得当会极大提高自己的工作效率;相反,如果乱用,会给团队中其他人带来麻烦。它的作用简要概括为:可以对某一段线性提交历史进行编辑、删除、复制、粘贴;因此,合理使用rebase命令可以使我们的提交历史干净、简洁!

git rebase有点类似git merge,但是两者又有不同,打个比方,你有两个抽屉A和B,里面都装了衣服,现在想把B中的衣服放到A中,git merge是那种横冲直撞型的,拿起B就倒入A里面,如果满了(冲突)再一并整理

下面看下git rebase 成功之后如何撤销,感兴趣朋友看下。

git rebase 当两个分支不在一条直线上,需要执行merge操作时,使用该命令操作。该命令执行时极有可能显示merge失败,如下图1,使用git diff命令查看冲突内容,手动 修改冲突,git add filename,表示冲突

git rebase 过程中可以使用git --abort/--continue来进行操作,成功之后如何撤销呢?

结果是from_branch的代码更新到to_branch,同时to_branch的commit log加到from_branch的最前方。例子:1.git rebase remotes/main/master MYBRANCH从远程主fork的master分支到本地分支MYBRANCH

首先执行git reflog查看本地记录

可知本次rebase之前的id 为:

02a3260 HEAD@{9}: commit: adjust ds5 ir data save file formate

所以执行

git reset --hard 02a3260

即可

到此这篇关于git rebase 成功之后撤销的操作方法的文章就介绍到这了,更多相关git rebase撤销内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

git merge是用来合并两个分支2113的。5261 # 将b分支合并到当前分支 git merge b git cherry-pick可以选择某一个4102分支中的一个或几个commit(s)来进行操作。例1653如,假设我 们有个稳定版本的分支,叫v2.0,另外还有个开发版本的分支v3.0内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • 一不小心git rebase后出现(master|rebase 1/10)的问题及解决办法
  • 解决使用commit提交大文件无法推送到远程库问题及git rebase使用详解
  • git rebase命令使用实战
  • 如何禁止浏览器使用后退按钮功能
  • 千万要避免的五种程序注释方式小结
  • git回退代码到某次commit的实现方法
  • 微信小程序设置http请求的步骤详解
  • 一不小心git rebase后出现(master|rebase 1/10)的问题及解决办法
  • git ssh 配置多个账户的方法
  • 在ubuntu18.04版本安装vscode(2种)
  • git之如何把本地文件上传到远程仓库的指定位置
  • 手把手教你将vim改装成一个ide编程环境(图文) 吴垠
  • xml cdata的作用
  • git rebase成功后是什么样子
  • git rebase 之后可以回退吗
  • 关于Git与Repo的小问题,请问repo sync更新代码与git rebase后git fetch有什么区别呢?
  • git rebase 解决完冲突执行什么命令
  • git命令之git merge 和 git rebase的区别
  • git reset rebase和 revert的区别
  • git rebase 出现conflict怎么办
  • Git push,merge,pull,fetch,rebase各自在什么场景下使用
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全javascriptasp.netphp编程ajax相关正则表达式asp编程jsp编程编程10000问css/htmlflex脚本加解密web2.0xml/rss网页编辑器相关技巧安全相关网页播放器其它综合dart首页一不小心git rebase后出现(master|rebase 1/10)的问题及解决办法解决使用commit提交大文件无法推送到远程库问题及git rebase使用详解git rebase命令使用实战如何禁止浏览器使用后退按钮功能千万要避免的五种程序注释方式小结git回退代码到某次commit的实现方法微信小程序设置http请求的步骤详解一不小心git rebase后出现(master|rebase 1/10)的问题及解决办法git ssh 配置多个账户的方法在ubuntu18.04版本安装vscode(2种)git之如何把本地文件上传到远程仓库的指定位置手把手教你将vim改装成一个ide编程环境(图文) 吴垠xml cdata的作用2019最新的pycharm激活码(推荐)进制转换算法原理(二进制 八进制eclipse 格式化代码时不换行与自微信小程序设置http请求的步骤详几款开源的中文分词系统十进制负数转换为二进制、八进制从console.log说起(console.log详url 长度有限制吗?git 撤销操作、删除文件和恢复文windows 中 \r\n 区别于 类unix中的\n 疑web 设计与开发者必须知道的 15 个站点判断email地址是否正确的几个函数(asp/phchrome 调试技巧(小结)vscode 云同步扩展设置settings sync插件为什么使用框架 使用框架的优缺点常用vscode 快捷键(window & mac)gif演示重装win10系统超详细的图文教程(适用所有adb shell input keyevent 控制按键输入的
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved