全局设置
在日常的学习工作中,经常需要使用Git来管理项目和代码。为了方便,很多人都会通过执行:
|
|
来设置全局用户信息,以免每个项目还要单独操作。
但是这样会带来一个副作用:一般来说工作代码需要使用公司账号信息,这样每当初始化工作项目的时候,务必还得修改对应设置,否则提交上去发现错了还得放开远程仓库权限做 force push
,非常麻烦。该如何解决呢?
1. Don’t guess my identity
Git的开发社群里也有相同的困扰,于是在2.8版本中增加了 user.useconfigonly
设置项来强制每个Git项目单独设置git user,避免上面所说的不小心使用个人邮箱提交公司代码的情况发生。
使用方法:
执行
1 2 3
yee@ubuntu:~$ git unset --global user.email yee@ubuntu:~$ git unset --global user.name yee@ubuntu:~$ git config --global user.useconfigonly true
在各个项目里单独设置用户信息
没有执行第2步的话 git commit
时就会报错,避免错误的提交。
2. Conditional Configurations
从2.13版本开始,Git能够通过条件设置,方便的为工作项目全局配置git user为公司邮箱,来更好的解决这个问题。
当前只能对指定git目录设置
务必确保个人设置放在公司设置前面!!
使用方法:
在
~/.gitconfig
全局设置文件里增加:1 2 3 4 5 6
[includeIf "gitdir:~/personal/"] path = .gitconfig-personal [includeIf "gitdir:~/go/src/go.company.com/"] path = .gitconfig-work [includeIf "gitdir:~/work/"] path = .gitconfig-work
添加
~/.gitconfig-work
工作信息文件:1 2 3
[user] name = company email = [email protected]
添加
~/.gitconfig-personal
个人信息文件:1 2 3
[user] name = personal email = [email protected]
通过以上设置,在 ~/go/src/go.company.com/
和 ~/work/
目录下的项目会使用 .gitconfig-work
的配置,其它则会使用 .gitconfig-personal
的配置了。
后悔药
如果真不小心忘记修改就提交了,可以使用以下脚本修改仓库中的错误用户信息
|
|
需要临时解除master保护状态,执行
git push --force