如某个 repo 里面共有 1000 个提交,里面有 500 个提交的 commit message 是包含 "default message" 字符串的,如何将这些提交从提交历史里清除出去呢?
git rebase,然后会开个 vim 让你去修改,批量编辑即可
#1 楼 @ninehills 你可能理解错了,我说的是,把这 500 个 commit 丢弃掉,原来 1000 个 commit,处理之后,剩下 500 个 commit
#2 楼 @lips 他没说错。你 rebase 到第一个 commit,然后用多选把所有的 default message 的 commit 都 squash 了
#1 楼 @ninehills 如果 rebase -i HEAD~10 还行,如果有 2000 个 commit, rebase 第一个 commitID,好像 reabse 要发生很多问题, 要 rebase --continue n 次,根本没法用啊
#1 楼 @ninehills 只有一个 branch, rebase -i HEAD~10 不知为何会出现冲突,想不明白,把前面的 commit 丢了,怎么会有冲突呢?只是前面的 commit 都合并到后面的 commit 了啊,不应该有冲突的啊
#3 楼 @j9ywy 如何全部 squash 了,不要再确认呢? rebase -i 把 500 个 pick 设置成 s 后,要很多次输入:q ,如何让其默认不修改 message,自动 squash 了呢?
https://ruby-china.org/topics/25656 看看这里:https://www.atlassian.com/git/tutorials/rewriting-history,希望有帮助。