这篇文章根据实际碰到的一个问题来介绍一下git配置相关的内容。
命令: git config
使用git config进行相关的配置操作
配置文件
git在整体上,配置文件分为三级,结合优先级相关信息如下
简单来说,优先级别离仓库越近越高,所以 项目级别 > 用户级别 > 系统级别。相同的设定同时出现时,优先级别高的会覆盖上层的配置。
配置检查
使用git config 不同的参数可以对如上三个不同的级别进行相关设定的检查
因为相同的设定有可能会产生覆盖,使用git config -l会列出git认为的最终设定信息
问题现象
很多客户端在自动生成.gitignore时会碰到问题,比如在如下git和os的版本下碰到了ng new动作发生的错误提示
环境信息
liumiaocn:angualr liumiao$ git --versiongit version 2.15.0liumiaocn:angualr liumiao$ uname -aDarwin liumiaocn 17.3.0 Darwin Kernel Version 17.3.0: Thu Nov 9 18:09:22 PST 2017; root:xnu-4570.31.3~1/RELEASE_X86_64 x86_64liumiaocn:angualr liumiao$ liumiaocn:angualr liumiao$ ng --version _ _ ____ _ ___ / / _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _| / △ / | '_ / / _` | | | | |/ _` | '__| | | | | | | / ___ /| | | | (_| | |_| | | (_| | | | |___| |___ | |/_/ /_/_| |_|/__, |/__,_|_|/__,_|_| /____|_____|___| |___/Angular CLI: 1.7.3Node: 8.9.1OS: darwin x64Angular: ...liumiaocn:angualr liumiao$
现象
liumiaocn:angualr liumiao$ ng new demo1 --skip-install create demo1/README.md (1021 bytes) create demo1/.angular-cli.json (1240 bytes)...省略 create demo1/src/app/app.component.ts (207 bytes)error: could not expand include path '~/.gitcinclude'fatal: bad config line 44 in file /usr/local/git/etc/gitconfigProject 'demo1' successfully created.liumiaocn:angualr liumiao$
配置信息
liumiaocn:angualr liumiao$ cat /usr/local/git/etc/gitconfig [core] excludesfile = ~/.gitignore legacyheaders = false # >git 1.5 quotepath = false[user]# name = your name# email = your@name[mergetool] keepBackup = true[push] default = simple # [ matching | simple ][color] ui = auto interactive = auto[repack] usedeltabaseoffset = true # >git 1.5[alias] s = status a = !git add . && git status au = !git add -u . && git status aa = !git add . && git add -u . && git status c = commit cm = commit -m ca = commit --amend # careful ac = !git add . && git commit acm = !git add . && git commit -m l = log --graph --all --pretty=format:'%C(yellow)%h%C(cyan)%d%Creset %s %C(white)- %an, %ar%Creset' ll = log --stat --abbrev-commit lg = log --color --graph --pretty=format:'%C(bold white)%h%Creset -%C(bold green)%d%Creset %s %C(bold green)(%cr)%Creset %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative llg = log --color --graph --pretty=format:'%C(bold white)%H %d%Creset%n%s%n%+b%C(bold blue)%an <%ae>%Creset %C(bold green)%cr (%ci)' --abbrev-commit d = diff master = checkout master spull = svn rebase spush = svn dcommit alias = !git config --list | grep 'alias//.' | sed 's/alias//.//([^=]*//)=//(.*//)///1///t => //2/' | sort[include] # as of 1.7.10 https://github.com/git/git/commit/9b25a0b52e09400719366f0a33d0d0da98bbf7b0 path = ~/.gitcinclude path = .githubconfig path = .gitcredential#[github]# user =# token =[diff] # git does copy/rename *detection*. if you want it to track copies/renames: # http://stackoverflow.com/questions/1043388/record-file-copy-operation-with-git # renames = copies[diff "exif"] textconv = exif[credential] helper = osxkeychainliumiaocn:angualr liumiao$
原因
原因似乎是因为~的展开出现了问题,将~在设定文件中展开为全局的名称暂定解决了这个问题,但是结合上文可知,其实是将系统级的设定降到了用户级的处理方式。
修改方法
liumiaocn:angualr liumiao$ sudo cp /usr/local/git/etc/gitconfig /usr/local/git/etc/gitconfig.orgPassword:liumiaocn:angualr liumiao$ echo $HOME/Users/liumiaoliumiaocn:angualr liumiao$ echo ~/Users/liumiaoliumiaocn:angualr liumiao$ sudo vi /usr/local/git/etc/gitconfigliumiaocn:angualr liumiao$ liumiaocn:angualr liumiao$ diff /usr/local/git/etc/gitconfig /usr/local/git/etc/gitconfig.org2c2< excludesfile = /Users/liumiao/.gitignore---> excludesfile = ~/.gitignore44c44< path = /Users/liumiao/.gitcinclude---> path = ~/.gitcincludeliumiaocn:angualr liumiao$
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对VEVB武林网的支持。
注:相关教程知识阅读请移步到服务器教程频道。