为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Git中更改多个提交的作者和提交者名称以及电子邮件?

如何在Git中更改多个提交的作者和提交者名称以及电子邮件?

Git
阿波罗的战车 2019-05-28 18:00:53
如何在Git中更改多个提交的作者和提交者名称以及电子邮件?我正在学校的计算机上编写一个简单的脚本,并将更改提交给Git(在我的pendrive中的repo中,从我家里的计算机克隆)。几次提交后,我意识到我正在以root用户身份提交内容。有没有办法将这些提交的作者改成我的名字?
查看完整描述

3 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

更改作者(或提交者)将需要重写所有历史记录。如果您对此感到满意并认为它值得,那么您应该查看git filter-branch。手册页包含几个示例以帮助您入门。另请注意,您可以使用环境变量来更改作者,提交者,日期等的名称 - 请参阅git手册页的“环境变量”部分。

具体来说,您可以使用此命令修复所有分支和标记的所有错误的作者姓名和电子邮件(来源:GitHub帮助):

#!/bin/shgit 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


查看完整回答
反对 回复 2019-05-28
?
不负相思意

TA贡献1777条经验 获得超10个赞

你也可以这样做:

git filter-branch --commit-filter '
        if [ "$GIT_COMMITTER_NAME" = "<Old Name>" ];
        then
                GIT_COMMITTER_NAME="<New Name>";
                GIT_AUTHOR_NAME="<New Name>";
                GIT_COMMITTER_EMAIL="<New Email>";
                GIT_AUTHOR_EMAIL="<New Email>";
                git commit-tree "$@";
        else
                git commit-tree "$@";
        fi' HEAD

注意,如果在Windows命令提示符下使用此命令,则需要使用"而不是'

git filter-branch --commit-filter "
        if [ "$GIT_COMMITTER_NAME" = "<Old Name>" ];
        then
                GIT_COMMITTER_NAME="<New Name>";
                GIT_AUTHOR_NAME="<New Name>";
                GIT_COMMITTER_EMAIL="<New Email>";
                GIT_AUTHOR_EMAIL="<New Email>";
                git commit-tree "$@";
        else
                git commit-tree "$@";
        fi" HEAD


查看完整回答
反对 回复 2019-05-28
  • 3 回答
  • 0 关注
  • 1808 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信