From c12116c0ad4300f24799cc65888bfa36853fd847 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Sun, 24 Jul 2022 13:38:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E3=80=8A=E4=BF=AE?= =?UTF-8?q?=E6=94=B9Git=E6=89=80=E6=9C=89=E6=8F=90=E4=BA=A4=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E4=B8=AD=E7=9A=84=E4=BD=9C=E8=80=85=E5=92=8C=E9=82=AE?= =?UTF-8?q?=E7=AE=B1=E3=80=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../theme/components/ArticleMetadata.vue | 2 +- .../27.修改Git所有提交记录中的作者和邮箱.md | 52 +++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 repos/fragments/2022/03/27.修改Git所有提交记录中的作者和邮箱.md diff --git a/repos/.vitepress/theme/components/ArticleMetadata.vue b/repos/.vitepress/theme/components/ArticleMetadata.vue index fbc1069be..26c246daa 100644 --- a/repos/.vitepress/theme/components/ArticleMetadata.vue +++ b/repos/.vitepress/theme/components/ArticleMetadata.vue @@ -48,7 +48,7 @@ const { theme, frontmatter } = useData() } .meta-icon { position: relative; - top: 1.3px; + top: 1.36px; } .meta-icon svg { height: 14px; diff --git a/repos/fragments/2022/03/27.修改Git所有提交记录中的作者和邮箱.md b/repos/fragments/2022/03/27.修改Git所有提交记录中的作者和邮箱.md new file mode 100644 index 000000000..ba4c94602 --- /dev/null +++ b/repos/fragments/2022/03/27.修改Git所有提交记录中的作者和邮箱.md @@ -0,0 +1,52 @@ +--- +title: 修改Git所有提交记录中的作者和邮箱 +author: 查尔斯 +date: 2022/03/27 13:00 +categories: + - 杂碎逆袭史 +tags: + - Git +--- + +# 修改Git所有提交记录中的作者和邮箱 + +## 前言 + +**C:** 上一篇,笔者介绍了怎么修改 Git 最后一次提交的作者和邮箱信息。那如果你是已经提交了很多次的记录,难道一个个的回退过去修改吗?显然不可能,所以本篇笔者带着大家认识一下如何批量修改 Git 提交记录中的作者和邮箱信息。 + +## 问题解决 + +解决方法其实就是编写一个脚本来进行批量替换。 + +1. 新建一个 sh / bat 格式的脚本文件(如果你是在 cmd 中执行,那就用 bat 格式,如果是在 git bash 中执行就用 sh) + +2. 复制下方脚本内容到脚本文件中,然后编辑替换好错误邮箱、正确作者和邮箱(如果是在 cmd 中执行,#!/bin/sh 就替换为 #!/bin/bat) + + ```shell + #!/bin/sh + + git filter-branch --env-filter ' + WRONG_EMAIL="错误的邮箱" + NEW_NAME="正确的作者名" + NEW_EMAIL="正确的邮箱" + + if [ "$GIT_COMMITTER_EMAIL" = "$WRONG_EMAIL" ] + then + export GIT_COMMITTER_NAME="$NEW_NAME" + export GIT_COMMITTER_EMAIL="$NEW_EMAIL" + fi + if [ "$GIT_AUTHOR_EMAIL" = "$WRONG_EMAIL" ] + then + export GIT_AUTHOR_NAME="$NEW_NAME" + export GIT_AUTHOR_EMAIL="$NEW_EMAIL" + fi + ' --tag-name-filter cat -- --branches --tags + ``` + +3. 保存脚本 + +4. 将脚本文件放到要批量修改提交记录的 Git 仓库中(根目录就行) + +1. 执行脚本 + +随后你就会看到,先是提示一个 warn 警告,然后它会一条条的修改以往提交记录,如果错误的提交比较多,那就耐心等一会儿吧。