我有一个相当大的 Git 存储库,有 1000 次提交,最初是从 SVN 导入的。在公开我的存储库之前,我想清理数百条在我的新存储库中没有意义的提交消息,并删除所有添加的 git-svn 信息文本。
我知道我可以使用“git rebase -i”,然后使用“git commit --amend”来编辑每个单独的提交消息,但是要编辑数百条消息,这是一个巨大的痛苦。
有没有更快的方法来编辑所有这些提交消息?理想情况下,我将每条提交消息都列在一个文件中,我可以在一个地方编辑它们。
Thanks!
这是一个老问题,但由于没有提到git filter-branch
,我只是加上我的两分钱。
我最近不得不批量替换提交消息中的文本,将一段文本替换为另一段文本,而不更改其余的提交消息。例如,我必须更换参考:#xxxxx with 参考文献:#22917.
I used git filter-branch
像这样
git filter-branch --msg-filter 'sed "s/Refs: #xxxxx/Refs: #22917/g"' master..my_branch
- 我使用了该选项
--msg-filter
仅编辑提交消息,但您可以使用其他过滤器来更改文件、编辑完整提交信息等。
- 我有限
filter-branch
仅将其应用于不在 master 中的提交(master..my_branch
)但您可以通过省略提交范围将其应用到整个分支。
按照文档中的建议,在您的分支副本上尝试此操作。
希望有帮助。
答案使用的来源
- 关于何时使用该函数的用例:https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History#The-Nuclear-Option:-filter-branch https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History#The-Nuclear-Option:-filter-branch
- 功能参考(带有选项列表):https://git-scm.com/docs/git-filter-branch https://git-scm.com/docs/git-filter-branch
- 重写的例子:https://davidwalsh.name/update-git-commit-messages https://davidwalsh.name/update-git-commit-messages
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)