热门搜索 :
考研考公
您的当前位置:首页正文

基于目录的git配置

来源:东饰资讯网

Git的强大就不多说了,反正我已经重度依赖git了。

使用git遇到的一个问题是,工作和自己的项目需要使用不同的git配置,如提交者的姓名和邮箱,而git config本身只提供了项目级用户级系统级的配置,并不能满足我的需求。

如果可以在项目级用户级之间再加入一个目录级的配置,就可以很好地解决我的问题,即在工作目录下的所有项目使用工作账号配置,个人目录下的所有项目使用个人账号配置。

- work  # use work config
  + project1
  + project2
- my  # use my config
  + project3
  + project4

那么如何实现一个目录级的配置呢?

方案一

修改用户级配置可以有以下几种方法:

  • 直接执行命令:git config --global user.name=Gerald
    永久修改了配置文件,如果没机会执行退出脚本,配置将不会复原。
  • 指定不同的文件:mv ~/.gitconfig_awesome ~/.gitconfig
    永久修改了配置文件,如果没机会执行退出脚本,配置将不会复原。
  • 通过环境变量GIT_CONFIG指定config文件
    这样会导致系统级配置失效,副作用比较大。

这几个方法虽然可行,但都有不妥之处。

方案二

export GIT_AUTHOR_NAME=Gerald
export 
export GIT_COMMITTER_NAME=Gerald
export 

再执行命令时就会优先使用环境变量中的配置。

这样的好处的不会污染全局的配置,但是也存在一些问题。首先,git config看到的仍是原来的配置,这会引起一些混乱。而且原来的配置和环境变量并不是一一对应的关系,比如这里原本只需要配置user.nameuser.email,用环境变量则需要配置4个值,而且效果也不完全一样。

方案三

alias git='git -c user.name=Gerald -c 

即可像原来一样使用git,只是每次输入git命令时,都会通过alias加入上面的配置,达到了修改全局配置的效果,但是并不直接修改全局的配置文件。

再创建.out文件如下:

unalias git

即可在退出目录时恢复配置。
这样就完美解决了基于目录进行配置的问题。

Top