【发布时间】:2017-12-14 06:28:06
【问题描述】:
我想从我的分支的历史记录中删除一长串提交。我用过 git rebase -i
然后我用fixup 标记了一些提交,认为它们会被应用但没有提交信息。我还将一些标记为squash,认为它们会被应用,但它们的提交消息将与之前的提交消息合并。我留下了一些 pick,以为他们会保持原样,或者将他们的追随者 squash 或 fixup 合并到他们中。
根据需要标记它们后,我输入 Esc :wq,点击 return 并进入第二个编辑器屏幕。在这里,我只需点击Esc :wq 并再次点击return。
没有报告任何问题,所以我输入了git push。 Git 抱怨我不先拉动就无法推动,所以我输入了git pull,然后输入了git push。这似乎满足了 git 之神,但随后查看 git log 我看到我想要压缩在一起的提交消息被压缩成一条消息,不幸的是所有原始提交消息仍在日志中。
我以为他们会被删除。
我做错了什么,我误解了这个过程吗?
当我将我的分支合并到 master 时,那些 fixup-ed 提交消息会被合并还是会消失?
【问题讨论】:
-
(警告不要匆忙这样做)我相信你想要
git push --force而不是git pull。这将覆盖 overwrite 远程分支的历史记录。当你变基时,你自然会与远程存储库不同步。 -
这听起来正是我想要的。幸运的是,我所做的更改并不难重做,但我想了解为什么日志似乎显示了我认为不再存在的提交消息。