我想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. Git别名:追加字符串以提交消息
- 6. git diff最后提交加上所有未提交的更改?
- 7. Git推送所有提交作为单个提交与自定义消息
- 8. 从字符串中提取所有出现的特定字符
- 9. git搜索提交更改的字符串和列表文件与该提交中的字符串
- 10. 什么是我的Git提交消息中的空白字符?
- 11. 在git中输出给定提交的提交消息
- 12. 更改作者以提交特定消息
- 13. 如何doyou在git中修改最后一个提交消息?
- 14. 如何在git中修改提交消息?
- 15. git提交模板消息
- 16. Git - 撤消所有更改更改
- 17. 在Git上更改旧的提交消息
- 18. 如何撤消提交并将更改提交到Git中的其他分支?
- 19. 如何选择WHERE字符串提交给美国一个特定的字符串开始的所有行
- 20. 从特定字符串提取信息
- 21. 如何更改hg mq中的提交消息?
- 22. git cherry:如何通过提交消息识别等价提交
- 23. 如何做git南瓜承诺给定的提交消息
- 24. 在GIT的特定分支中查找所有提交
- 25. 重置上次提交后git中的所有更改
- 26. 更改git历史记录中所有提交的时区
- 27. 如何列出包含Git中所有更改文件的特定文件的提交?
- 28. 如何提取特定的字符串
- 29. 有没有办法在检查更改时用git累积提交消息?
- 30. 更改消息以Umbraco形式提交
感谢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