6

如果我有以下提交

38deab3 Bug Fix# 10
f33fb65 Bug Fix# 20
4fa0485 Bug Fix# 30

为什么git rebase -i f33fb65允许我编辑 38deab3 而不是 f33fb65?为什么我必须运行git rebase -i 4fa0485编辑 f33fb65?

资源。

4

4 回答 4

6

您需要一个基本提交rebase,一些不会更改的提交,因为在交互期间执行任何其他操作rebase都会更改提交的 sha id ......当然,除非您压缩/修复以下提交进入挑选的提交!

关键是,该rebase命令不会提前知道您将rebase如何提交,因此它需要一个保证不会被rebase.

于 2013-09-03T06:26:06.860 回答
3

git rebase -i 4fa0485意思是:将我当前的分支(比如master)重新设置在4fa0485. 因此,它将允许您编辑从最后一次提交之后开始的所有4fa0485提交master

于 2013-09-03T06:15:22.897 回答
3

因为 rebase 是在您选择的提交之后应用提交。您正在重新选择这个选择的基础,所以您说“使用 f33fb65 并重新应用我所拥有的一切”。

于 2013-09-03T06:10:47.127 回答
2

git rebase 似乎 rebase 到指定的提交(无论你是通过提交 SHA 还是 eg 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
于 2019-10-16T10:27:53.073 回答