修改git提交历史中的author和email

Git 配置文件分为三级,系统级(–system)、用户级(–global)和目录级(–local),三者的使用优先级以离目录 (repository)最近为原则,如果三者的配置不一样,则生效优先级 目录级>用户级>系统级,可以通过 git config --help 查看更多内容。

系统级配置存储在 /etc/gitconfig 文件中,可以使用 git config --system user.name "jim" ,git config --sytem user.email "[email protected]" 来进行配置,该配置对系统上所有用户及他们所拥有的仓库都生效的配置值。

用户级存储在每个用户的 ~/.gitconfig 中,可以使用 git config --global user.name "jim" ,git config --global user.email "[email protected]" 来进行配置,该配置对当前用户上所有的仓库有效。

目录级存储在每个仓库下的 .git/config 中,可以使用 git config --local user.name "jim" , git config --local user.email "[email protected]" 来进行配置,只对当前仓库生效。

如果上次提交 msg 错误/有未提交的文件应该同上一次一起提交,需要重新提交备注:git commit --amend -m 'new msg'

修改上次提交的 author、email可以使用 :git commit --amend --author="newName "

修改整个历史记录中的某些错误的 author、email有两种方式 git rebase 或者 git filter-branch

# git rebase 模式

git rebase -i -p 76892625a7b126f4772f8d7e331ada3552c11ce1

# 弹出编辑器,在需要修改的 commit 处 由 picked 改变为 edit ,然后 wq 退出 vim;

git commit --amend --author 'newName '

# 执行后即变更了相应的 author 和 email

git rebase --continue

git rebase 模式需要理解 git 的操作原理,步骤也比较多,可以直接使用 git filter-branch快速方便

# git filter-branch 模式 https://help.github.com/articles/changing-author-info/

git filter-branch --env-filter '

OLD_EMAIL="[email protected]"

CORRECT_NAME="Your Correct Name"

CORRECT_EMAIL="[email protected]"

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提交历史中的author和email)