在没有Rebase的情况下重做GIT中的提交历史记录

时间:2010-02-23 18:39:08

标签: git rebase

自从提出我的上一个问题which turned out to be about rebasing with GIT以来,我已经决定我根本不想改变。相反,我想:

  1. 工作,随时检查和推动
  2. 抛弃所有这些提交并假装它们从未发生过(所以在工作结束时一个干净的提交)
  3. 我目前通过将文件复制到新目录然后将它们复制回新分支(在与我的工作分支相同的位置分支),然后将其合并到master或其他任何位置来执行此操作。

    这是不是很糟糕,为什么?更重要的是:有更好的/ GIT方法吗? git rebase -i迫使我合并(并挑选和压缩)。

2 个答案:

答案 0 :(得分:26)

最简单的方法是软复位。

请查看您的主题分支:

git checkout -b topic master
工作,工作,工作。

git commit
git commit
git commit
git commit

对此感到高兴,您可以在主

之上进行新的单一提交
git reset --soft master
git commit

现在合并到主人(这将是一个快进)并整理主题分支。 (请注意,如果您准备好记住或标记母版的位置并且只是在没有分支的情况下处理母版,您就不需要这样做了,您可能刚刚完成git reset --soft old-mastergit commit并且您不会需要这些最后的清理步骤。)

git checkout master
git merge topic
git branch -d topic

答案 1 :(得分:10)

您还可以将git merge--squash选项一起使用。