我在脚本中发现了一个错误,因此我尝试了很多修复它。
我是一个Git初学者,所以我所做的可能很脏,但我在每次尝试后都在我的主分支上提交。所以我可以推送更改并尝试在远程计算机上运行。
现在一切正常,但主分支有点乱:
A - > B - > fix_attempt_1 - > fix_attempt_2 - > ... - > fix_attempt_15 - > B_without_bug
我想删除与我的测试相关的所有提交,这样我就可以有一个干净的图表:
A - > B - > B_without_bug
我的问题是
我该怎么做?
下次要避免这种情况的最佳分支策略是什么?创建一个测试分支,这样我就不在主分支上进行测试了吗?
答案 0 :(得分:0)
您可能不希望实际删除提交,而是压缩(合并)它们
git rebase -i
(交互式rebase)非常适合这个
此链接具体谈及此事项 - https://www.atlassian.com/git/tutorials/rewriting-history/git-rebase-i/
所以,你可以做(例如)
$ git rebase -i HEAD~4
然后pick
和squash
根据需要提交
您甚至可以输入新的提交消息,以便真正清理您的树
答案 1 :(得分:0)
git rebase -i
是您的朋友,但很危险,因为它会重写您的历史记录。使用您的分支的其他任何人(在本例中为 master )将引用不再存在的提交。你只需使用
git rebase -i
然后确保在一次干净的提交中压缩所有提交,或者只是删除包含您想要一起删除的提交的行。
将来,您应该在开始新开发时创建分支:
git checkout -b newDevelopmentBranch
现在做你所有的发展,承诺和推动你想要的。你甚至可以改变你的历史;因为你是这个分支上唯一的开发人员(我想)。如果您的分支是干净的,您希望在主分支上获得您的开发,您可以合并它们:
git checkout master
git merge newDevelopmentBranch