文章目录

  • 1. Git 安装
  • 2. Git 配置
  • 2.1 配置用户名和密码
  • 2.2 配置你的编缉器
  • 2.3 配置你的比较工具
  • 2.4 配置缩写和颜色
  • 2.5 检查你的配置
  • 2.6 获取帮助
  • 附录


1. Git 安装

使用 Homebrew 安装 Git:

$ brew install git

卸载重装 Git:

$ brew reinstall git

Git 安装路径查看:

$ which git

PATH 查看:

$ echo $PATH

如何 Git 安装路径不在环境变量 PATH 中,则需要修改 PATH。
譬如 Git 安装路径为 /usr/local/Cellar ,如果希望终端可以直接使用安装到该路径下的 Git 工具,打开 ~/.bash_profile 文件,增加以下内容:

export PATH=/usr/local/Cellar:$PATH

如果有多个路径需要设置,用 : 分隔开,譬如:

export PATH=~/flutter/bin:/usr/local/Cellar:$PATH

什么是环境变量 $PATH
Linux是一个多用户操作系统,每个用户都有自己专有的运行环境。用户所使用的环境由一系列变量所定义,这些变量被称为环境变量。PATH 决定了 Shell 将到哪些目录中寻找命令或程序,这个变量是在日常使用中经常需要修改的变量。

2. Git 配置

配置文件.gitconfig可以被存储在三个不同的位置:

  1. /etc/gitconfig 文件:包含了适用于系统所有用户和所有库的值。如果你传递参数选项’–system’ 给 git config,它将明确的读和写这个文件。
  2. ~/.gitconfig 文件 :具体到你的用户。你可以通过传递–global 选项使Git 读或写这个特定的文件。如果不加–global,只对当前的仓库起作用,每个仓库的Git配置文件都放在.git/config文件中。
  3. 位于git目录的config文件 (也就是 .git/config) :无论你当前在用的库是什么,特定指向该单一的库。每个级别重写前一个级别的值。因此,在.git/config中的值覆盖了在/etc/gitconfig中的同一个值。

2.1 配置用户名和密码

安装Git后首先就是设置你的用户名和e-mail,每次Git提交都会使用该信息。它被永远的嵌入到了你的提交中:

$ git config --global user.name "yourname"  
$ git config --global user.email "yourName@gmail.com"

如果你传递了 --global 选项,因为Git将总是会使用该信息来处理你在系统中所做的一切操作。如果你希望在一个特定的项目中使
用不同的名称或e-mail地址,你可以在该项目中运行该命令而不要–global选项。

2.2 配置你的编缉器

Git在需要你输入一些消息时会使用该文本编辑器。缺省情况下,Git使用你的系统的缺省编辑器,这通常可能是vi或者vim。如果你想使用另外的文本编辑器,例如Emacs,你可以做如下操作:

$ git config --global core.editor emacs

2.3 配置你的比较工具

它用于解决合并时的冲突。例如,你想使用vimdiff:

$ git config --global merge.tool vimdiff

Git可以接受kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, 和 opendiff作为有效的合并工具,你也可以设置一个客户化的工具。

2.4 配置缩写和颜色

使用如下命令 配置Git命令缩写

$ git config --global alias.co checkout  
$ git config --global alias.br branch  
$ git config --global alias.ci commit  
$ git config --global alias.st "status -s"  
$ git config --global alias.co checkout  
$ git config --global alias.l "log --oneline -decorate -12 --color"
$ git config --global alias.ll "log --oneline —decorate --color"

最长的配置(详细列出每一个分支的备注,建立时间,建立用户)

$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

Git能够为输出到你终端的内容着色,以便你可以凭直观进行快速、简单地分析,有许多选项能供你使用以符合你的偏好。设置color.ui为true可打开所有的默认终端着色。

$ git config --global color.ui true

想要具体到哪些命令输出需要被着色以及怎样着色或者 Git 的版本很老,你就要用和具体命令有关的颜色配置选项,如color.branch,color.diff,它们都能被置为true、false或always:

除此之外,以上每个选项都有子选项,可以被用来覆盖其父设置,以达到为输出的各个部分着色的目的。例如,让diff输出的改变信息以粗体、蓝色前景和黑色背景的形式显示:

$ git config --global color.diff.meta "blue black bold"

你能设置的颜色值有:normal、black、red、green、yellow、blue、magenta、cyan、white,想要设置字体属性的话,可选择:bold、dim、ul、blink、reverse。

2.5 检查你的配置

如果你想检查你的设置,你可以使用下面这个命令来列出Git可以在该处找到的所有的设置:

$ git config --list  
  user.name=yourName  
  user.email=yourName@gmail.com  
  color.status=auto  
  color.branch=auto  
  color.interactive=auto  
  color.diff=auto

你可能会看到一个关键字出现多次,这是因为Git从不同的文件中(例如:/etc/gitconfig以及~/.gitconfig)读取相同的关键字。

你也可以在config后面带上参数key来查看某特定关键字目前的值,

$ git config <key>

例如,

$ git config user.name
  yourName

2.6 获取帮助

如果当你在使用Git时需要帮助,有三种方法可以获得任何git命令的手册页(manpage)帮助信息:

$ git help <verb>  
$ git <verb> --help  
$ man git-<verb>

verb可以为merge、config或其他关键词。


附录

我的 .bash_profile 文件:

export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
export PATH=~/flutter/bin:/usr/local/Cellar:$PATH

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

我的 .gitconfig 文件:

[user]
	name = MissYasiky
	email = gzxieyunjia@gmail.com
[core]
	editor = vim
	excludesfile = /Users/yjxie/.gitignore_global
[alias]
	co = checkout
	br = branch
	ci = commit
	st = status -s
	lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
	l = log --oneline --decorate -12 --color
	ll = log --oneline --decorate --color
	sm = summary
	rb = rebase
	fp = fetch -p

[color "diff"]
	meta = blue black bold
[merge]
	tool = sourcetree
[diff]
	tool = diff
[push]
	default = simple
[difftool "sourcetree"]
	cmd = opendiff \"$LOCAL\" \"$REMOTE\"
	path = 
[mergetool "sourcetree"]
	cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
	trustExitCode = true
[commit]
	template = /Users/yjxie/.stCommitMsg