美文网首页秘笈(IT)
基于目录的git配置

基于目录的git配置

作者: 寂寞的原子 | 来源:发表于2017-05-01 22:25 被阅读91次

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

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

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

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

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

首先需要一个前提,就是我们的环境。这一切都是在命令行环境下进行,而我用的是强大的Zsh。Zsh有一个插件autoenv可以在切换目录的时候执行退出旧目录.out)和进入新目录.env)的脚本,这就让我们有机会根据目录的变化来配置当前环境了。

方案一

使用用户级配置替代目录级配置,并在切换目录时根据当前目录修改用户级配置。
文档中可以看到,git的用户级配置就是存在~/.gitconfig里的,在进入目录时切换成当前的~/.gitconfig就相当于修改了目录下所有项目的默认配置。

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

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

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

方案二

通过环境变量覆盖当前的用户配置。
文档中可以看到,git的很多配置是可以通过环境变量覆盖的,比如此处,我们只需要在外层目录下创建.env文件如下:

export GIT_AUTHOR_NAME=Gerald
export GIT_AUTHOR_EMAIL=gerald@example.com
export GIT_COMMITTER_NAME=Gerald
export GIT_COMMITTER_EMAIL=gerald@example.com

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

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

方案三

修改git命令,临时加入对应配置。
文档中有说到,git -c key1=value1 -c key2=value2 ...就可以临时加入新的配置。所以只需要在外层目录创建.env文件如下:

alias git='git -c user.name=Gerald -c user.email=gerald@example.com'

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

再创建.out文件如下:

unalias git

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

相关文章

  • 基于目录的git配置

    Git的强大就不多说了,反正我已经重度依赖git了。 使用git遇到的一个问题是,工作和自己的项目需要使用不同的g...

  • Jenkins+Git 基于Tag进行构建

    Jenkins+Git 基于Tag进行构建 目录 一、前言 二、步骤 1、先准备原材料Tag。 2、配置Jenki...

  • Git 安装

    安装git mac安装git 配置Git 配置Git的用户名跟邮箱, 下面的命令 表示配置home目录下的设置 配...

  • Git

    git config 底层配置会覆盖上层配置 仓库 创建空仓库,在当前目录下创建名为.git的目录,该目录仅是gi...

  • git命令大全

    git命令 新建git仓库 配置 git的配置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以...

  • git系列教程之一:基本用法

    git的安装后的配置 添加配置信息 查询配置信息 Git的使用 在需要的指定目录添加库: 向仓库中添加目录 提交 ...

  • GIT常用命令

    配置 git的配置信息默认保存在用户主目录下.gitconfig文件中 显示当前的Git配置 git config...

  • GIT实操手册 —— 值得收藏的GIT常用命令字典

    目录 git config 配置 git help 显示有关Git的帮助信息 git init 初始化 git a...

  • windows-terminal配置gitbash

    如图进行配置 配置如下 我的git安装在默认目录下 命令行C:\Program Files\Git\git-bas...

  • Git之环境配置

    二、环境配置 目录:软件下载、启动Git、基本的Linux命令、Git配置 1.软件下载 打开Git官网:http...

网友评论

    本文标题:基于目录的git配置

    本文链接:https://www.haomeiwen.com/subject/vwyqtxtx.html