修改 Git 记录中的作者信息
Git 设置用户名和邮箱
既然要做多人开发,那么必然要设置不同的用户名和邮箱,下面是设置的命令。
# 全局设置
git config --global user.name <username>
git config --global user.email <email>
# 分支设置
git config user.name <username>
git config user.email <email>
如上,我们可以对每个人设置一个分支,在不同分支中使用不同的用户名和邮箱。
安装 git-filter-repo
git-filter-repo
的项目地址在 git-filter-repo ,安装要求是 Git
版本不低于 2.22.0,python3
版本不低于3.5。python3 一般是 Linux 平台中使用并于python2
区分的,但在 Windows 中是不可用的。在 INSTALL.md
中有 Windows 用户须知,但令人难受的是这一小节并没有说如何安装这个 python
脚本,另外见到代码目录中 git_filter_repo.py
文件最近修改时间是三年前,也i就没尝试这个脚本,话说,他就不能写清楚吗?
虽然不能直接在 Windows 直接使用,但我们有 WSL2 啊,在 INSTALL.md
中有以下 bash指令:
PACKAGE_TOOL install git-filter-repo
我们 WSL2
中有 apt-get
啊,当把命令输进去后,竟然显示没有 git-filter-repo
这个东西,What Fuck! 只能使用 pip
安装了,但它提示这个并不会把这个脚本自动添加到 PATH 中,不过没关系,到这一步了也不在乎这么一点小缺点了,安装后添加按照如下命令添加 PATH。
# 当前终端有效
export PATH=$PATH:/xxx/xxx
# 永久有效
# 最后一行添加上面的指令
vi .bashrc
现在我们终于把这玩意装好了。
修改用户信息
第一步,我们需要克隆一份干净的仓库,切换的新目录并克隆。
在仓库目录下执行如下命令。
#将所有用户名中包含的old 替换成 new(注意,不支持中文)
git filter-repo --name-callback 'return name.replace(b"old", b"new")'
#将所有 commit 信息的 email中包含的 [email protected] 替换成 [email protected]
git filter-repo --email-callback 'return email.replace(b"[email protected]", b"[email protected]")'
当中指令执行完之后所有作者信息就都被修改了,就可以把这个本地仓库提交到我们希望的远程仓库了。
因为信息修改了,所以远程仓库同步地消失了,这时需要手动添加远程仓库 git remote add origin <repo.git>
,然后强制提交更新。
git push --force --tags origin 'refs/heads/*'
需要注意的是,不要修改已提交到远程仓库的 commit 的作者信息,这会产生大量冲突,对项目管理十分不友好。
所以在使用多个账号提交 GIt 记录时,一定要事先设置用户名和邮箱。