[译]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