git命令之git rebase 的用法
假设你现在基于远程分支"origin",创建一个叫"mywork"的分支。
$ git checkout -b mywork origin
现在我们在这个分支做一些修改,然后生成两个提交(commit).
$ vi file.txt
$ git commit
$ vi otherfile.txt
$ git commit
...
但是与此同时,有些人也在"origin"分支上做了一些修改并且做了提交了. 这就意味着"origin"和"mywork"这两个分支各自"前进"了,它们之间"分叉"了。
在这里,你可以用"pull"命令把"origin"分支上的修改拉下来并且和你的修改合并; 结果看起来就像一个新的"合并的提交"(merge commit):
但是,如果你想让"mywork"分支历史看起来像没有经过任何合并一样,你也许可以用 git rebase:
$ git checkout mywork
$ git rebase origin
这些命令会把你的"mywork"分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到".Git/rebase"目录中),然后把"mywork"分支更新 到最新的"origin"分支,最后把保存的这些补丁应用到"mywork"分支上。
当'mywork'分支更新之后,它会指向这些新创建的提交(commit),而那些老的提交会被丢弃。 如果运行垃圾收集命令(pruning garbage collection), 这些被丢弃的提交就会删除. (请查看 git gc)
现在我们可以看一下用合并(merge)和用rebase所产生的历史的区别:
在rebase的过程中,也许会出现冲突(conflict). 在这种情况,Git会停止rebase并会让你去解决 冲突;在解决完冲突后,用"git-add"命令去更新这些内容的索引(index), 然后,你无需执行 git-commit,只要执行:
$ git rebase --continue
这样git会继续应用(apply)余下的补丁。
在任何时候,你可以用--abort
参数来终止rebase的行动,并且"mywork" 分支会回到rebase开始前的状态。
$ git rebase --abort
git命令之git rebase 的用法相关推荐
- git命令及git合并分支进行多人协作
git命令及git合并分支进行多人协作 git命令大全 git的工作区.暂存区.本地仓库和远程仓库 git常用命令 git revert 和 git reset的区别 修改默认分支 合并分支 Git分 ...
- git命令之git clone用法
2015年02月26日 13:59:11 阅读数:81047 转:http://blog.csdn.net/wangjia55/article/details/8818845 在使用git来进行版本控 ...
- 10个你应该了解的Git命令(以及Git省时小窍门)
在本文中,我们将讨论那些作为开发人员.数据科学家或产品经理应该知道的各种各样的Git命令.并且将使用Git查看.删除和整理.此外,我们还将介绍如何使用Bash别名和Git编辑器配置转义Vim和节省时间 ...
- Git命令:git常用命令
Git 基本知识与常用指令 https://www.cnblogs.com/chiao/archive/2011/07/27/2117835.html 一.Git代码状态转换图 其中: 未被Git跟踪 ...
- Git 命令之Git clean
开篇点题 git clean命令用来从你的工作目录中删除所有没有tracked过的文件 git clean -n 不会删除,只是Notification,提醒 2. git clean - ...
- 【Git命令】Git常用命令速查 Git命令汇总
记录Git的一些常用指令,遗忘时方便快速查询. 符号说明: []里表示可选字段 <>里表示需要用户定义的字段 1. 基础配置 配置用户签名: # 配置用户名 git config [--g ...
- git命令之git tag 给当前分支打标签
git tag - 标签相关操作 发表于 2011年06月29日 由 机器猫 标签可以针对某一时间点的版本做标记,常用于版本发布. 列出标签 $ git tag # 在控制台打印出当前仓库的所有标签 ...
- git命令之git mergetool vi非正常退出.swp删除不了的问题
1.git pull命令产生无法merge的错误 使用了 git mergetool命令然后...傻逼了 进入了vi操作界面,不会操作,非正常退出... 然后就产生了.swp相关文件,死活删除不 ...
- git 命令之 git commit --no-verify -m ‘XXX‘
过往的开发中一多多少少会用一些可视化git提交工具,比如小乌龟,sourcetree,但是今天遇到了一个奇葩的问题,git的sourcetree代码提交不上去.解决方式如下 git commit -- ...
最新文章
- 3.2.4 控制图层显示的范围
- 我作为一个程序员,除了写程序还会干什么?什么都不会了!
- Ribbon-3使用配置文件自定义Ribbon Client
- 如何找到SAP support package名称
- WindowsAPI中PostMessage与SendMessage的区别
- 计算机多媒体设计徽章,酷毙了:Hackaday将会议徽章设计成一台可编程的电脑
- 不要在意七十亿分之一对另七十亿分之一的看法
- 为什么农产品电商不好做
- vs 2017 建立 php,WIN10系统下OSG+VS2017或者vs2019环境搭建
- Spring定时器corn表达式详解
- Atitit it法学论 uke协会it刑法attilax总结 目录 1. 法学plus	1 1.1. 替换表	1 2. 第一章 刑法概说	1 2.1. 财产	1 3. Line 65: 第四章 犯
- Word-去掉标题前面的小黑点
- SAP中物料采购PO和SA共存情况下的标准价格确定
- 新手入坑杭电百题2000-2099
- 【教程】CRX格式插件不能离线安装?本地扩展CRX无法安装怎么办?
- 骞云数据库DBaaS解决方案深度解析
- SpringBoot+SpringSecurity+JWT整合实现单点登录SSO史上最全详解
- android单元测试教程,Android单元测试-Junit
- js 获取系统时间
- 从区块技术的发展历史看区块链是什么?