我想grep和更改所有推送到Github的消息中的特定字符串。可能吗?怎么样? 我知道如何更改最后一条消息git commit --amend
,但我想更改所有提交的所有消息。如何更改所有git消息提交中的特定字符串?
1
A
回答
2
使用git-filter-branch
与它的--msg-filter
选项,如:
git filter-branch -f --msg-filter 'sed "s/git-svn.*$//g"' -- --all
注意,这将改变相当多所有您提交的ID在你的回购,所以大家谁对你的项目工程将因此需要做的一个新鲜的克隆。
见一些更多的讨论,这篇博客文章:
http://mm0hai.net/blog/2011/03/10/rewriting-git-commit-message-history.html
注意上面的命令只执行对你的本地副本,你需要推到GitHub上,以获得您的更新反映了那里。 ..
步骤一步
首先克隆一个新鲜复制你的回购,使用--mirror
标志:
$ git clone --mirror git://example.com/my-repo.git
这是一个裸露的回购协议,这意味着你的普通文件将是不可见的,但它是您库的数据库的Git的完整副本,并在这一点上,你应该做的备份它确保你不会失去任何东西。
现在可以运行git-filter-branch
修复你提交的信息:
git filter-branch -f --msg-filter 'sed "s/git-svn.*$//g"' -- --all
一旦你满意你的回购的更新的状态,将其推回了(注意,因为你的克隆命令使用的--mirror
标志,这将推动在远程服务器上更新所有裁判):
$ git push
在这一点上,你准备好everyone-包括自己-to抛弃他们回购的旧副本和做新的原始数据的新克隆。
...我不得不指出The BFG通常比清理Git历史要好得多,但在这种情况下,只有git-filter-branch
听起来非常适合您的需求。
相关问题
- 1. 检查提交消息中的特定字符串 - SVN Precommit Hook
- 2. 查找所有符合特定“提交次数”的git提交
- 3. 如何取消提交Git更改
- 4. 更改Git提交信息
- 5. 列出在特定提交中更改特定行的所有提交
- 6. 如何列出自特定GIT提交后不会更改的所有文件
- 7. 意外推送提交:更改git提交消息
- 8. Git:撤消未提交的更改以重置特定文件
- 9. Git - 如何从给定范围内的提交中获取所有消息?
- 10. Git - 如何从上次合并获取所有提交消息?
- 11. Git别名:追加字符串以提交消息
- 12. 在git中修改过去提交的提交消息
- 13. git diff最后提交加上所有未提交的更改?
- 14. Git推送所有提交作为单个提交与自定义消息
- 15. 更改所有推送的提交消息
- 16. 从字符串中提取所有出现的特定字符
- 17. git搜索提交更改的字符串和列表文件与该提交中的字符串
- 18. 什么是我的Git提交消息中的空白字符?
- 19. 在git中输出给定提交的提交消息
- 20. 发送带有空格的字符串作为git使用bash提交消息
- 21. Git - 如何回滚上次提交的所有更改?
- 22. 更改作者以提交特定消息
- 23. 如何doyou在git中修改最后一个提交消息?
- 24. 如何在git中修改提交消息?
- 25. git提交模板消息
- 26. Git - 撤消所有更改更改
- 27. 更改所有包含特定字符串的数组元素
- 28. 在Git上更改旧的提交消息
- 29. 如何撤消提交并将更改提交到Git中的其他分支?
- 30. 如何编辑推送Git提交的提交消息
感谢roberto,我已将我的提交历史中的“is”改为“was”(我的英语太糟糕了:D)。为什么Github不显示实际的字符串?看到这里:https://github.com/khajavi/Design-Patterns/tree/master/Behavioural和这里https://github.com/khajavi/Design-Patterns/commits/master/Behavioural比较。他们为什么不同? – 2013-04-08 08:14:38
@Khajavi这可能只是一个浏览器刷新问题,两个页面上的提交消息匹配时,我刚刚检查他们 - 例如,最新的提交消息是“行为的自述文件被添加。”对彼此而言。 – 2013-04-08 08:44:56