Git清除历史
如果我想删除历史中比较测试之前的提交,而后面还有很多提交需要保留,那么:
1.2如果要删除的历史记录比较分散,可以考虑交互式重库、自拣/合并等。如gitrebase-I
1.1如果要删除的历史记录是连续的,比如从最开始到某个时刻的所有记录都被删除或者中间部分可以被删除,可以考虑Onto Rebase,比如git rebase-Onto
如果我有很多历史记录要删除,而保留的很少(例如,只保留最新的一个,这是我以前不想要的),我可以简单地创建一个孤儿分支来重建历史记录。比如git checkout - orphan new_start,这个命令会创建一个名为new_start的分支,这个分支没有历史,但是所有的文件都会原封不动的存在,你可以据此开始重新提交。建成后甚至可以直接废弃老枝。此外,还可以指定新分支的起点。默认情况下,当然是从头部开始。
也可以把史记分成两部分(或更多),一部分完整,一部分简化等。详情见本文档关于git replace:/2010/03/17/replace . html。
其实可以说的场景有很多种。Git的用法非常灵活。即使暂时不用,也值得仔细去过一遍,知道它能做什么,然后在遇到各种复杂场景的时候,你也能推导出自己的解决方案。