git 修改历史提交记录

git Modify historical submission records

提问人:jiangxiaopeng 提问时间:11/16/2023 更新时间:11/16/2023 访问量:18

问:

enter image description here

我想实现以下目标

  1. 修改电子邮件地址。历史提交的电子邮件地址是 [email protected],历史提交的电子邮件地址是 [email protected]。
  2. 增加时间范围。我只想修改日期 2021-12-22 之后的记录。

我尝试了这个脚本,但它没有达到指定的时间范围过滤功能

git filter-branch -f --env-filter '
OLD_EMAIL="[email protected]"
CORRECT_NAME="jiangyangang"
CORRECT_EMAIL="[email protected]"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL"] && [ `git show -s --format="%ct" $GIT_COMMITTER_DATE` -gt $(date -d "2021-12-22" +%s) ];
then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]  && [ `git show -s --format="%ct" $GIT_COMMIT` -gt $(date -d "2021-12-22" +%s) ];
then
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

期待您的回复,谢谢

git shell

评论

0赞 knittl 11/16/2023
您不能将旧的电子邮件地址映射到当前的电子邮件地址吗?这听起来比重写所有历史要简单得多,而且是非破坏性的(这是另一个优点).mailmap
0赞 knittl 11/16/2023
请注意,您可以提供 和 将筛选限制为仅属于时间范围的提交。--after--since
0赞 jiangxiaopeng 11/16/2023
我应该在脚本的哪个位置添加 --after 和 --since 参数?使用 .mailmap 是个好主意,但这不是我想要的
0赞 knittl 11/17/2023
--after/--since是 rev-list 选项,受 支持,与 rev-list 选项相同。filter-branch--all

答: 暂无答案