git log 显示的内容与 git rebase -i head~3 显示的内容不匹配

Wer*_*rem 6 git github rebase

我在 rebase 方面遇到了问题。我想压缩一些构建,但我不能。

这是我执行命令时得到的git log –oneline

git log --oneline
2e6d3cf Fix bug fetching data
4abe96e conflicts merged
34d130d latam_schedule with geotargeted languaje and data fetching
8687f73 removes extra lines, and add the includes I remove before.
eed4f10 unnecessary adds and sample block removed
d2d58e6 latam_schedule with geotargeted languaje and data fetching
75b1b6d parseo el string para extraer las horas.
8a3b067 Agrego un render con datos reales
d856ef1 Agrego un render de data dummy
7331f83 Alert removed(commented)
128bfc1 First LATAM commit
4dd79cb Merge pull request #1016 from matterhorn/disco-608-bugfix
Run Code Online (Sandbox Code Playgroud)

问题是我没有看到我想在执行git rebase HEAD~3.

我执行时看到的不是我的三个提交,而是以下内容git rebase -i HEAD~3

pick 34d130d latam_schedule with geotargeted languaje and data fetching
pick d2d58e6 latam_schedule with geotargeted languaje and data fetching
pick eed4f10 unnecessary adds and sample block removed
pick 8687f73 removes extra lines, and add the includes I remove before.
pick 2e6d3cf Fix bug fetching data
Run Code Online (Sandbox Code Playgroud)

问题是我不知道为什么 d2d58e6、eed4f10 和 8687f73 在列表中。另一方面,如果我尝试继续压缩,会有很多不应该存在的冲突(例如尝试合并太旧的文件)。

这就是git log --oneline --graph --decorate显示

git log --oneline --graph --decorate
* 2e6d3cf (HEAD, matterhorn-latam/latam, latam) Fix bug fetching data
*   4abe96e conflicts merged
|\
| * 8687f73 (matterhorn-latam/master, master) removes extra lines, and add the includes I remove before.
| * eed4f10 unnecessary adds and sample block removed
| * d2d58e6 latam_schedule with geotargeted languaje and data fetching
* | 34d130d latam_schedule with geotargeted languaje and data fetching
|/
* 75b1b6d parseo el string para extraer las horas.
* 8a3b067 Agrego un render con datos reales
* d856ef1 Agrego un render de data dummy
* 7331f83 Alert removed(commented)
* 128bfc1 First LATAM commit
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

moc*_*ace 3

没有观察到必要的提交,因为HEAD~3告诉 git 始终遵循提交树中的第一个父级,它恰好遵循合并的分支历史记录\xe2\x80\xa1,从您的问题来看,这不是您所追求的历史记录。

\n\n

您需要在commit^1commit^2(以及commit^3章鱼合并)之间显式选择才能导航树。对于你的例子:

\n\n
git log --oneline --graph --decorate\n* 2e6d3cf HEAD\n*   4abe96e HEAD^1 = HEAD~1 (! History branches here. !)\n|\\\n| * 8687f73 HEAD^1^1 = HEAD^^ = HEAD~2\n| * eed4f10 HEAD^^^ = HEAD~3\n| * d2d58e6 HEAD^^^^ = HEAD~4\n* | 34d130d HEAD^2   (! Note !)\n|/\n* 75b1b6d HEAD^2^ = HEAD^^^^^ = HEAD~5\n* 8a3b067 ...\n* d856ef1 ...\n* 7331f83 ...\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

\xe2\x80\xa1这里的顺序有点不寻常,因为合并提交记录了父级,因此合并时的 HEAD 始终是第一个父级,这意味着当您'时,您必须在 8687f73 上。已经完成合并,将其算作第一个。

\n

  • 你能添加 git 命令来启动 rebase 吗? (2认同)