同一GitHub账户绑定个人与工作双邮箱时,SSH密钥认证与提交归属的关联疑问
嗨,我来帮你把这个疑问理清楚~其实核心是要区分提交的作者信息和GitHub的身份认证这两个完全独立的环节:
提交作者信息只看本地Git配置
不管你用哪个SSH密钥推送代码,提交记录里显示的作者邮箱,完全由你当前仓库(或全局)的user.email配置决定。你说的改本地仓库的user.email为个人邮箱,这就完全能让个人仓库的提交归属到你的个人邮箱下,和SSH密钥是用哪个邮箱生成的一点关系都没有,放心这么做就行。SSH密钥只负责验证你是账户所有者
GitHub的SSH密钥是绑定到你的整个账户上的,不是绑定到单个邮箱。哪怕你用工作邮箱生成的密钥,只要把它添加到你的GitHub账户里,它的作用就只是证明“你有权限操作这个账户下的仓库”——不会在任何公开的提交记录、仓库页面里留下“这个推送用了绑定工作邮箱的密钥”这类信息,甚至你自己在GitHub账户后台也只能看到哪些密钥是有效的,看不到某次具体推送用了哪个密钥。
简单总结:只要你把对应仓库的user.email设对,提交的作者信息就没问题;SSH密钥只是用来让你顺利推代码的“通行证”,不会影响提交的归属显示。
另外给你个小技巧:如果在工作机经常切换个人和公司仓库,可以用Git的条件配置来自动切换邮箱,不用每次手动改。比如在你的全局~/.gitconfig里加:
[includeIf "gitdir:~/work-projects/"] path = ~/.gitconfig-work [includeIf "gitdir:~/personal-projects/"] path = ~/.gitconfig-personal
然后分别在~/.gitconfig-work和~/.gitconfig-personal里设置对应的user.email和user.name,这样进入不同目录的仓库时,Git会自动加载对应的配置,省心很多~
备注:内容来源于stack exchange,提问作者Ish Thomas

