这个博客已经过去了很久……

不过,你可以通过以下方式找到我

现在的位置: 首页 > 谈前端 > HTML > 正文
如何修改git库的author
2013年07月18日 HTML ⁄ 共 1670字 等你评论

有时候,忘了做git config设置或config的email不规范,导致git log中author不对,造成沟通困难。 此时,你可以遵循如下步骤,修改author信息:

1、首先,你需要设置正确的user.name和user.email信息,注:请务必使用公司邮箱(gitlab用户请和证书邮箱保持一致,否则无法push,请打开gitlab.alibaba-inc.com 点击右上角的profile,看看自己的邮箱是什么)

git config --global user.name "你的名称"
git config --global user.email "你的公司邮箱"

注:去掉--global参数是单独为当前项目设置

2、设置好后,修改你前面已提交的不正确的信息:

 linux下在库根目录运行命令(windows请看最后一节): git-m (请先安装此命令:sudo yum install git-m -b test)
 1)向导会让你输入需要修正的email(括弧内提示会自动给你找到不规范的email,你可以直接回车)
 2)输入需要替换成正确的用户名
 3)输入需要替换成正确的email(公司邮箱)

此时,程序会自动找出所有不合规范email的,并试图自动修复你本地尚未push的修改。

3、对不支持rpm的用户,可以通过 wget http://gitlab-help.gitlab.alibaba-inc.com/git-m  来获取git-m命令。 你也可以手工运行git filter-branch -f --commit-filter 命令来修改author信息,参阅下面的一节。

关于git-m

git-m是雪江制作的封装了git filter-branch --commit-filter操作的专门用户修改author信息的工具。

安装

1、linux下的安装方法:sudo yum install git-m -b test -y

2、windows用户如果安装了命令行git(msysgit)下载,可以运行(更新于2013-1-4):

curl http://gitlab-help.gitlab.alibaba-inc.com/git-m -o git-m

获得git-m命令,然后在命令行下直接运行git-m(在项目代码库根目录下)。

3、ubuntu/mac等其他平台的用户,可以通过windows一样的命令或者wget http://gitlab-help.gitlab.alibaba-inc.com/git-m获得。

git-m

其他

也可以手工运行如下代码(不是很方便): git-m实际代码是:

git filter-branch -f --commit-filter '
        if [ "$GIT_AUTHOR_EMAIL" = "the old email" ];
       then
                GIT_AUTHOR_NAME="your name";
                GIT_AUTHOR_EMAIL="your new email";
                git commit-tree "$@";
        else
                git commit-tree "$@";
        fi' -- 你的版本^..HEAD HEAD

其中这个【你的版本】(后面要跟^尖号),是你没有push过的,本地提交的第一个版本(注意,不要写已经push过的版本)

逻辑是,找到历史中的不合规email,然后用新的去替换。windows用户,请自己修改其中的参数。

FAQ

1、问:git-m 时报错:"Cannot rewrite branch(es) with a dirty working directory." 使得author修改失败,如何解决。

答:有2种可能,
一是、你本地有没有暂存的修改。此时运行:git stash进行暂存,或者git commit将修改提交;再git-m即可。
二是、如果运行git status发现本地是干净的,还是报这个错的话,是git 1.7.1的一个bug,意味着git没能刷新内部索引。
此时运行如下命令:git update-index -q --ignore-submodules --refresh 对索引进行刷新。
然后再运行git-m命令进行修改应该就可以了。

友荐云推荐
×