如果我有以下提交
38deab3 Bug Fix# 10
f33fb65 Bug Fix# 20
4fa0485 Bug Fix# 30
为什么git rebase -i f33fb65
允许我编辑38deab3而不是f33fb65?为什么我有
运行git rebase -i 4fa0485
编辑f33fb65?
答案 0 :(得分:3)
因为rebase正在您选择的提交之后应用提交。你正在对这个选择的那个进行调整,所以你说“拿f33fb65然后重新申请我拥有的一切”。
答案 1 :(得分:3)
git rebase -i 4fa0485
表示:在master
之上重新定义当前分支(例如4fa0485
)。因此,它允许您编辑从4fa0485
开始直到master
上次提交的所有提交。
答案 2 :(得分:3)
您需要对rebase
进行基本提交,一些不会更改的提交,因为在交互式rebase
期间执行除选择之外的任何操作都将更改提交的sha id。当然,你将以下提交压缩/修复到挑选的提交中!
关键是,rebase
命令将不会提前知道您将如何rebase
提交,因此它需要保证不会被{{1更改的基本提交}}
答案 3 :(得分:0)
git rebase似乎可以根据指定的提交(无论是通过提交SHA还是例如HEAD~4
进行重新设置)。
因此,您应该使用提交相对表示法来选择您知道并想要修改的提交! ?
$ git rebase -i <SHA>~1
这包括您指定的提交(如您之前的提交)
语法:
$ git rebase -i <SHA>~<number>
这将从最近的提交中选择,直到不包括您选择的<number>
个更多的提交!
以如下示例提交历史记录:
aaa first commit
bbb add a function
ccc add terrible colour scheme
ddd another function
eee my most recent function
您要删除提交ccc
您将输入并获得以下输出。
$ git rebase -i ccc~1
pick ccc add terrible colour scheme
pick ddd another function
pick eee my most recent function