git filter分支替换为空字符串

问题描述 投票:0回答:1

我正在尝试更改所有提交消息,并且需要用空格替换特定的字符串。我该怎么办?

我尝试过:

git filter-branch --msg-filter 'sed "s/SOMESTR-/ /g"' -- --all

但是我收到此消息:

WARNING: You said to rewrite tagged commits, but not the corresponding tag.
WARNING: Perhaps use '--tag-name-filter cat' to rewrite the tag.

这是否表示有效?

并且一旦替换了所有提交,是否需要再次推送到远程以更新所有提交?

编辑:我做了git log,看来提交消息已经更新,

所以我想我只需要git push -f?

UPDATE:我能够删除提交消息上的SOMESTR-前缀。然后,我强行将其推送到主服务器,可以看到所有提交消息都已更新。但是,我还需要更新其他分支,并用空格替换相同的前缀。

[当我切换到另一个分支时,我运行了相同的命令

git filter-branch --msg-filter 'sed "s/SOMESTR-/ /g"' -- --all

它说了一些有关使用武力的事。我在过滤器分支中添加了-f,然后再次将力推​​到该分支。

Cannot create a new backup.
A previous backup already exists in refs/original/
Force overwriting the backup with -f

合并请求显示提交消息仍然具有前缀SOMESTR-/,但是当我执行git log时,我可以看到同一提交的两个版本,一个不带前缀,另一个带前缀。即使在提交消息中仍显示未删除的前缀,也可以压缩并合并请求请求吗?

git github git-filter-branch
1个回答
0
投票

它的意思就是它所说的。您有标记指向重写的提交。这些标签仍然指向重写的提交,而不是重写。有时这就是您想要的,有时不是。如果您也想移动标签,请按照标签上的说明操作,或者使用其他名称过滤器为新标签赋予新名称。

© www.soinside.com 2019 - 2024. All rights reserved.