[译]git rebase -i
使用rebase -i会在终端出现一个交互页面. 在这个交互页面中我们可以对要rebase的commit做一定的修改.
用法
git rebase -i <master>
把当前的分支的commit放在<base>后面, -i会打开一个编辑器, 在这你可以为每一个commit输入一个命令, 这个命令决定了如何把单个的commit传输到new base. 还可以改变commit列表的顺序.

讨论
大多数开发者喜欢在merge一个分支到master的时候使用rebase -i打磨我们这个feature分支. 他给了我们机会合并一些commit, 删除一些commit, 对commit进行排序.
例子
# Start a new feature
git checkout -b new-feature master
# Edit files
git commit -a -m "Start developing a feature"
# Edit more files
git commit -a -m "Fix something from the previous commit" # Add a commit directly to master
git checkout master
# Edit files
git commit -a -m "Fix security hole" # Begin an interactive rebasing session
git checkout new-feature
git rebase -i master
最后的命令会打开一个编辑器, 其中有两行命令.
pick 32618c4 Start developing a feature
pick 62eed47 Fix something from the previous commit
在这你可以修改pick命令. 在这个例子中, 我们使用squash合并这两个commit:
pick 32618c4 Start developing a feature
squash 62eed47 Fix something from the previous commit
保存关闭编辑器后rebase开始. 这是会打开一个新的编辑器让我们填写commit描述.整个过程可视化如下:

注意了squash commit有一个新的ID号, 这表明他是一个全新的commit.
最后使用fase -forward merge集成feature分支:
git checkout master
git merge new-feature
[译]git rebase -i的更多相关文章
- [译]git rebase
		rebase就是重新定义你分支的起点, 分支上的commit将生成对应的新的commit并放在你指定的新的起点commit后, 分支上的老commit将被删除. rebase就是将你的分支从一个com ... 
- git rebase
		git rebase -i HEAD~[number_of_commits] git rebase -i HEAD~2 
- git rebase与 git合并(error: failed to push some refs to)解决方法
		1.遇到的问题 本地有一个git仓库,在github上新建了一个空的仓库,但是更新了REWADME.md的信息,即在github上多了一个提交. 关联远程仓库,操作顺序如下: git remote a ... 
- 聊下 git rebase -i
		在使用git作为源代码管理工具的时候,开发的时经常会面临一个常见的问题,多个commit 需要合并为一个完整的commit提交. 在一个基本的迭代周期里,你会有很多次commit,有跟配置文件相关的, ... 
- [git]rebase和merge
		转自:http://blog.csdn.net/wh_19910525/article/details/7554489 Git merge是用来合并两个分支的. git merge b # 将b分支合 ... 
- git merge 和 git rebase 小结
		Git merge是用来合并两个分支的. git merge b # 将b分支合并到当前分支 同样 git rebase b,也是把 b分支合并到当前分支 ---------------------- ... 
- [译]git push
		push就是把你本地仓储的commit传到远程仓储中去. 用法 git push <remote> <branch> push指定的分支到<remote>中去. ... 
- [译]git pull
		git pull把git fetch和git merge压缩成了一条命令. 用法 git pull <remote> 作用和git fetch <remote> &&a ... 
- git rebase简介(高级篇)
		原文:http://gitbook.liuhui998.com/4_3.html 一.基本 对于git rebase,你亦可以选择进行交互式的rebase.这种方法通常用于在向别处推送提交之前对它 ... 
随机推荐
- 学习通过Thread+Handler实现非UI线程更新UI组件
			[Android线程机制] 出于性能考虑,Android的UI操作并不是线程安全的,这就意味着如果有多个线程并发操作UI组件,可能导致线程安全问题.为了解决这个问题,Android制定了一条简单的规则 ... 
- AngularJs ngList、ngRepeat、ngModelOptions
			ngList 在文本输入的分隔的字符串和字符串数组间做转换,可以是一个固定的字符串分隔符(默认逗号)或正则表达式. 格式:ng-list=”value” value:表达式 通过这个值分隔字符串. ... 
- linux网络配置命令
			ifconfig 命令命令功能ifconfig命令被用于配置和显不Linux内核中网络接口的网络参数.命令语法ifconfig (参数)参数说明add〈地址〉:设置网络设备IPv6的P地址;del〈地 ... 
- javascript  未来新方法的介绍
			JavaScript1.6数组方法的扩展 var tmp = [1, 2, 3, 4, 5, 3]; console.log('indexOf:找出数组中某一对象的下标,如果没有则为-1'); con ... 
- JZOJ P1817:[8.27]研究性学习作业
			传送门 老师良心推荐的二分题.7月29号第一次写,想到了裸的DP,乱搞搞过了6组,欲优化,无解,弃疗. 然后今天老师给了题解,简单看了一下. 正解是二分答案+DP验证. 二分天数$day$,然后对于每 ... 
- 修改/etc/profile导致常用命令不可用的解决办法
			原因:/etc/profile文件修改有误 解决办法: 用/usr/bin/vim /etc/profile进入,进去后修改正确/etc/profile,然后重启机器让该文件生效即可. 
- linux认识第一面
			一.领域问题: 在客户端领域,windows始终占据了优势地位.而在服务器领域,全球98%的都是在用linux.因为linux作为服务器的载体,便宜又安全. 二.linux是基于内核的编写工具,在li ... 
- Java-IO之DeflaterOutputStream和InflaterOutputStream
			此类为使用 "deflate" 压缩格式压缩数据实现输出流过滤器 example import java.io.File; import java.io.FileInputStre ... 
- Latent Semantic Analysis (LSA) Tutorial 潜语义分析LSA介绍 一
			Latent Semantic Analysis (LSA) Tutorial 译:http://www.puffinwarellc.com/index.php/news-and-articles/a ... 
- Using Flash Builder with Flash Professional
			http://help.adobe.com/en_US/flashbuilder/using/WSc5cd04c102ae3e97-6e5d439512e1414e588-8000.html 
