Git 如何丢弃 commit message 中包含 "default message"的所有提交呢?

lips · 2015年04月28日 · 最后由 rubyu2 回复于 2015年05月20日 · 7387 次阅读

如某个 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 了

4 楼 已删除

#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 了呢?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号