Git自动设置不同邮箱

日常使用时,经常出现提交公司项目不小心用的私人邮箱,或者提交 Github 项目用了公司邮箱的情况,所以希望 Git 提交时能自动根据域名选择不同的邮箱。 全局设置必须配置用户名邮箱 git config --global user.useConfigOnly true 并且删除全局的 user.name 和 user.email 配置,这样本地如果有一些项目之前是读取全局配置邮箱的需要手动设置一下( 可以用复制下面的脚本里的部分代码进行自动设置,即 if 分支里的逻辑)。 所有的全局配置都在 ~/.gitconfig 文件中 设置 git hooks templates 目录 mkdir -p ~/.git-templates/hooks git config --global init.templatedir ~/.git-templates 然后在 ~/.git-templates/hooks目录里新建 post-checkout文件,内容如下: #!/bin/bash if [[ $1 == 00000000000* ]]; then remote=`git remote -v | awk '/\(push\)$/ {print $2}'` [email protected] # default name="x x" if [[ $remote == *需要匹配的公司域名* ]]; then [email protected] name="x x" fi echo "Configuring user <name: $nameemail: $email>" git config user....

December 26, 2021 · 1 min · 徐旭

git 修改已经 commit 的邮箱信息

开发过程中,经常会出现提交邮箱搞错的情况。在公司项目中错误提交了自己的 GitHub 邮箱,或者在开源项目中提交了公司邮箱。 下面记录一下补救措施。 先修改 .git/config 或者 修改全局的,修改成你需要的邮箱信息。 [user] email = [email protected] name = yourname git log 找到要修改的那一条 commit,复制要修改的commit 的前一条 commit 的哈希值。 git rebase -i {{刚刚复制的哈希值}} # 或者最近 3 条 $ git rebase -i HEAD~3 然后后会出现一个 vim 打开的文本,将需要修改的 commit 信息前面的 pick 文本改成 edit,保存退出。 修改邮箱信息 git commit --amend --author="name <[email protected]>" --no-edit 然后 git rebase --continue 中间也可跳过或退出 rebase 模式git rebase --skip git rebase --abort 循环执行上面两步,当输出 Successfully rebased and updated refs/heads/master. 修改完成。...

September 10, 2020 · 1 min · 徐旭