Github Commit Account About

Scene

  • 发现 Github 的 commit 没有显示在主页的记录图表中
  • 排查后得出是 commit 的用户不对

Solution

git config

  • 先调整本地的 git config

    1
    2
    3
    4
    5
    6
    7
    // 设置全局
    git config --global user.name "Author Name"
    git config --global user.email "Author Email"

    // 或者设置本地项目库配置
    git config user.name "Author Name"
    git config user.email "Author Email"
  • 以后每次提交前都检查下用户

    git rebase

  • 修改已经 commit 了的历史用户信息记录
  • git rebase -i HEAD~n n 回溯到指定的位置
  • 在想要修改的位置添加 exec git commit --amend --author="New Author<New Email Address>" -C HEAD
  • git pull
  • git push
  • 结果如下,并不能完全移除之前的提交历史,只是替换了
  • git filter-branch

  • 同样的修改历史用户信息记录
  • shell 脚本循环所有 commit 记录修改

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #!/bin/sh
    git filter-branch --env-filter '
    OLD_EMAIL="your-old-email@example.com"
    CORRECT_NAME="Your Correct Name"
    CORRECT_EMAIL="your-correct-email@example.com"
    if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
    then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
    fi
    if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
    then
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
    fi
    ' --tag-name-filter cat -- --branches --tags
  • git pull

  • git push
  • 和前面的 rebase 同样效果

Other

< - 僕らは知らない - >