在一些脏测试后删除提交

时间:2015-09-28 10:49:51

标签: git

我在脚本中发现了一个错误,因此我尝试了很多修复它。

我是一个Git初学者,所以我所做的可能很脏,但我在每次尝试后都在我的主分支上提交。所以我可以推送更改并尝试在远程计算机上运行。

现在一切正常,但主分支有点乱:

A - > B - > fix_attempt_1 - > fix_attempt_2 - > ... - > fix_attempt_15 - > B_without_bug

我想删除与我的测试相关的所有提交,这样我就可以有一个干净的图表:

A - > B - > B_without_bug

我的问题是

  1. 我该怎么做?

  2. 下次要避免这种情况的最佳分支策略是什么?创建一个测试分支,这样我就不在主分支上进行测试了吗?

2 个答案:

答案 0 :(得分:0)

您可能不希望实际删除提交,而是压缩(合并)它们

git rebase -i(交互式rebase)非常适合这个

Documentation

此链接具体谈及此事项 - https://www.atlassian.com/git/tutorials/rewriting-history/git-rebase-i/

所以,你可以做(​​例如)

$ git rebase -i HEAD~4

然后picksquash根据需要提交

您甚至可以输入新的提交消息,以便真正清理您的树

答案 1 :(得分:0)

  1. git rebase -i是您的朋友,但很危险,因为它会重写您的历史记录。使用您的分支的其他任何人(在本例中为 master )将引用不再存在的提交。
  2. 你只需使用

    git rebase -i
    

    然后确保在一次干净的提交中压缩所有提交,或者只是删除包含您想要一起删除的提交的行。

    1. 将来,您应该在开始新开发时创建分支:

      git checkout -b newDevelopmentBranch

    2. 现在做你所有的发展,承诺和推动你想要的。你甚至可以改变你的历史;因为你是这个分支上唯一的开发人员(我想)。如果您的分支是干净的,您希望在主分支上获得您的开发,您可以合并它们:

      git checkout master
      git merge newDevelopmentBranch