gpt4 book ai didi

git - 如何在所有 git 消息提交中更改特定字符串?

转载 作者:行者123 更新时间:2023-12-05 01:48:14 25 4
gpt4 key购买 nike

我想对所有推送到 Github 的消息进行 grep 和更改特定字符串。可能吗?如何?我知道如何更改最后一条消息 bye git commit --amend 但我想更改所有提交的所有消息。

最佳答案

使用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 以便让您的更新反射(reflect)在那里...

循序渐进

首先使用 --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

一旦您对 repo 的更新状态感到满意,将其向上推送(请注意,因为您的克隆命令使用了 --mirror 标志,此推送将更新所有 远程服务器上的引用):

$ git push

在这一点上,您已准备好让每个人(包括您自己)丢弃他们旧的存储库副本,并为新的原始数据创建新的克隆。

...我不得不指出 The BFG在清理 Git 历史方面通常比 git-filter-branch 好得多,但在这种情况下,git-filter-branch 听起来非常适合您的需求。

关于git - 如何在所有 git 消息提交中更改特定字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15872872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com