【发布时间】:2014-04-10 19:01:46
【问题描述】:
我遇到了变基问题。我想压缩一些构建,但我不能。
这是我执行命令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
问题是当我执行 git rebase HEAD~3 时,我没有看到我想要压缩的 2e6d3cf、4abe96e 和 34d130d 提交。
当我执行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
问题是我不知道为什么 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
有什么想法吗?
【问题讨论】:
-
请显示
git log --oneline --graph --decorate的输出。另外,请记住,除非您使用-p或--preserve-merges,否则 rebase 不会保留合并提交。此外,您的问题有点令人困惑,因为您所说的 rebase 编辑器中缺少的一些提交实际上是存在的,只是以相反的顺序,因为 rebase 以它们在git log中显示的相反顺序应用提交。 -
我刚刚在帖子中添加了该信息。
-
对。因为您没有使用
--preserve-merges,所以您得到了意想不到的结果。但是,当我执行git rebase HEAD~3时,我想要合并的“2e6d3cf、4abe96e和34d130d提交”是什么意思?为什么说“合并”?您的意思是要squash 这些提交吗? “Merge”在git中有一个非常具体的含义:将两个分支合并在一起。这不是您想要对这些提交执行的操作,是吗?请澄清您的问题。 -
我刚刚编辑了帖子。你是对的,我想“挤压”我的树最后一次提交。有几件事让我感到困惑,比如:为什么如果我使用“HEAD~3”,我不会只得到最后 3 次提交?谢谢
-
注意:如果您的
git log在交互式 rebase 的改写期间请小心:请参阅“git rebase -ishows wrong commit history after a rebase and force push”。使用 Git 2.24+(2019 年第四季度)。