git 的一些使用经验
1.修改提交邮箱
运行 git config --global user.email "新邮箱"
2.批量修改历史 commit 的邮箱
因为更换了邮箱地址,所以需要更改一下
项目目录下运行以下代码
git filter-branch -f --env-filter '
OLD_EMAIL="旧邮箱"
CORRECT_NAME="用户名"
CORRECT_EMAIL="新邮箱"
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 push -f 强制推送即可
3.GPG 密钥加签
偶然发现在 Github 上进行的 commit 有 verified 的标志,本地 git 提交的就没有
了解了一下,发现需要 gpg 验证
打开 Git Bash 命令行,运行 gpg --gen-key 即可生成密钥对(需要输入邮箱、用户名,然后设置证书密码)
运行 gpg --list-key 即可列出公钥
运行 gpg --list-secret-keys 列出密钥
运行 gpg -a --export 导出公钥
运行 gpg -a --export-secret-keys 导出密钥
把公钥填到 Github 里,并复制这里的 Key ID
然后在 Git Bash 里运行
git config --global user.signingkey 你的KeyID
这样就可以为以后的提交设置身份了(需要 密钥对邮箱、本地 git 提交邮箱以及 Github 的主要邮箱 一致)
IDEA 等需要设置一下
就是每次 commit 需要输入密码验证(嫌麻烦建议别搞这东西)
4.为历史 commit 加签
把项目拉取下来
在项目目录打开命令行
运行 git rebase -i --root
跳出文件后,把需要修改的 commit 的 pick 改成 edit,然后关闭文件
命令行里会变成如下内容
运行 git commit --amend -S
其中 amend 表示修正, S 表示加签
同样的,这个命令也可以用于修改 commit 的提交者信息 git commit --amend --author="FoskyM <i@fosky.top>"
git commit --amend --author="FoskyM <i@fosky.top>" -S 即可修改提交者信息并加签
会跳出文件,你可以把 commit message 也顺手改了,然后关闭文件即修改完 commit 了
第一下会跳出密码验证,后续不需要
运行 git rebase --continue 继续修改下一条 commit,重复之前操作直到出现以下内容
运行 git push -f 推送至仓库
再打开仓库 commit 记录查看,都有 verified 的标志了,顺眼多了