[译]git rebase -i

使用rebase -i会在终端出现一个交互页面. 在这个交互页面中我们可以对要rebase的commit做一定的修改. 

 

用法

1
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

  

posted @   irocker  阅读(1895)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 三行代码完成国际化适配,妙~啊~
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示