rebase的两大用处:
- 从上游分支获取最新commit信息,并有机的将当前分支和上游分支进行合并。
git rebase 变基分析:http://blog.chinaunix.net/uid-27714502-id-3436696.html
参考上面链接,稍后做总结
- 删除无用的中间 commit 记录 参考文章](http://www.jianshu.com/p/964de879904a))
前言: rebase 命令删除中间的无用 commit 记录,意味着至少保留首尾两个 commit
# 从 commit_id 开始到最后 commit 进行 rebase,进入编辑模式
$ git rebase -i [commit_id]
# 进入到编辑模式会看到可编辑的条目, 排列顺序由 commit 的提交先后 从上而下。
# 编辑模式中分两部分内容, 上半部分可编辑,是要执行的指令,下半部分是指令的注释。
# 指令部分由 指令名称、 commit hash 和 commit mesage 组成
# 指令名称目前只需要知道 pick 和 squash 这两个指令,具体解释见下边的指令注释
pick 2da3fdf add commit message_2
pick 7efd141 add this is last commit
# Rebase 6506966..7efd141 onto 6506966 (1 command(s))
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
#
# 调整好要合并或者修改的条目之后, 执行 :wq 命令,git会执行合并或改名操作,执行之后会再次进入 vi 编辑页面。
# 该编辑页面非注释部分就是几次的commit message , 我们要做的就是要将这些内容修改成新的 commit message
# 输入 wq 保存,几次 commit 就已经合并了。
# 查看 log 信息可进行验证
注意事项
在 rebase 的过程中有操作失误, 可以使用 git rebase --abort 来撤销修改,回到没有开始操作合并之前的状态。