我想在所有推送到Github上的消息中查找并更改特定字符串。这可能吗?如何实现?
我知道如何通过git commit --amend
更改最后一条消息,但我想更改所有提交的所有消息。
我想在所有推送到Github上的消息中查找并更改特定字符串。这可能吗?如何实现?
我知道如何通过git commit --amend
更改最后一条消息,但我想更改所有提交的所有消息。
git-filter-branch
命令并使用其 --msg-filter
选项,例如:git filter-branch -f --msg-filter 'sed "s/git-svn.*$//g"' -- --all
--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
此时,您已准备好让每个人(包括自己)放弃旧的代码库副本,并进行新的克隆以获取全新的原始数据。
...我不得不指出,相比于使用 git-filter-branch
来清理 Git 历史记录,The BFG 往往更加优秀,但在这种情况下,仅使用 git-filter-branch
就足够了。