Linux
$ sudo yum install git
或者
$ sudo apt-get install git
Mac
直接在Terminal执行git命令, 如果没有会提示安装方法.
如果喜欢安装程序的话, 点这里
第一次安装, 千万别要忘了配置你的git的使用者名字和邮箱. 这个道理很简单, 每一次的提交时需要记录提交者的, 如果没有提交者, 那么bug出现找谁来背锅??
Git 自带一个 git config 的工具来帮助设置控制 Git 外观和行为的配置变量。
/etc/gitconfig 文件: 包含系统上每一个用户及他们仓库的通用配置。
$ git config --system --list
~/.gitconfig 或 ~/.config/git/config 文件:只针对当前用户。
$ git config --global --list
当前使用仓库的 Git 目录中的 config 文件(就是 .git/config):针对该仓库。
每一个级别覆盖上一级别的配置,所以.git/config的配置变量会覆盖/etc/gitconfig中的配置变量。
当然, 也可以查看某一项配置信息.
形式:git config [--global|--system] <key>查看最终的配置属性值 $ git config user.name
查看当前系统的属性值 $ git config --global user.name
$ git config --global user.name "name"
$ git config --global user.email xxx@163.com
使用--global选项, 当以后在该系统上做的任何操作都会使用此属性. 如果你需要在某一个特定的项目使用其他名字和邮箱, 那么可以通过设置项目中的config文件, 这样config中的属性会覆盖掉global的全局属性, 并且当在其他项目中并不会造成影响. 使用方式只需要去掉--global参数即可修改项目中的.git/config文件
$ git config user.name "name"
获取帮助手册
形式: git help <verb> 或者 git <verb> --help
比如查看config手册
$ git help config
例如: 生成别名之后可以在日后用简短的表示来使用
$ git config --global alias.br branch $ git config --global alias.ci commit $ git config --global alias.st status
对于自动生成的文件, 日志, 编译的临时文件等. 可以对其进行配置, 让git不追踪这些文件
规范如下:
所有空行或者以 # 开头的行都会被 Git 忽略。可以使用标准的 glob 模式匹配。匹配模式可以以(/)开头防止递归。匹配模式可以以(/)结尾指定目录。要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反glob模式是指shell所使用的简化了的正则表达式.
* :匹配零个或多个任意字符[abc] :只匹配括号内的任意一个字符[0-9] :使用短划线表示范围, 可以匹配0到9之间的任何字符.? :匹配任意一个字符**:匹配任意的中间目录,例如a/**/z可以匹配a/z,a/b/z,a/b/c/z等如下给出一个样板:
# 忽略所有以 .c结尾的文件 *.c # 但是 stream.c 会被git追踪 !stream.c # 只忽略当前文件夹下的TODO文件, 不包括其他文件夹下的TODO例如: subdir/TODO /TODO # 忽略所有在build文件夹下的文件 build/ # 忽略 doc/notes.txt, 但不包括多层下.txt例如: doc/server/arch.txt doc/*.txt # 忽略所有在doc目录下的.pdf文件 doc/**/*.pdf
紧凑式中字母的表示含义如下:
?? :表示新添加的未追踪的文件M :M出现在右边,表示该文件被修改但是还没有放入暂存区M :M出现在左边,表示文件被修改已经放入了暂存区MM :出现两个,代表此文件在工作区修改已经放入了暂存区, 但之后有进行了修改,没有添加到暂存区
如果你想知道文件具体修改的内容, 那么diff会很有用
# 查看以追踪但尚未暂存的文件更新了哪些部分, 不添加额外参数 $ git diff # 对使用了add添加到了暂存区的内容, 使用--staged参数或者--cached $ git diff --staged
如果在工作区间对一个文件进行删除, 需要先进行add,然后才可以提交. 使用git rm可以直接在工作区间删除文件, 并提交到暂存区.
$ git rm fileName # 如果文件修改,并添加了暂存区, 需要使用-f参数来强制删除(force) $ git rm -f fileName # 可以使用glob模式,如下 $ git rm log/\*.log # 删除log目录下所有名称是.log结尾文件 $ git rm \*~ # 删除以~结尾的所有文件
同样使用git rm会方便很多, 并且如果相对文件重命名也可以如此
$ git mv file_from file_to当执行了这条语句之后, 只需要在下一次commit即可, 不需要考虑额外操作. 等价于如下:
$ mv file_from file_to $ git rm file_from $ git rm file_to
如果是最基本的git log, 那么会按提交时间列出所有更新, 包括提交的SHA-1校验和, 作者名称,邮箱,提交时间,提交说明. 下面说说常用选项.
# -p:仅显示最近x次的提交 格式 $ git log -p -x $ git log -p -2 # 查看最近的两次提交内容 # --stat:简略的显示每次提交的内容更改, 如哪些文件变更,多少删除,多少添加等 $ git log --stat # --pretty: 指定默认不同格式展示信息 $ git log --pretty=oneline #每次提交用一行显示 $ git log --pretty=format:"%h - %an, %ar : %s" # 效果:1a99c42 - 苏, 19 hours ago : 无意义提交关于format对应的常用占位符的写法和意义
选项说明%H提交对象(commit)的完整哈希字串%h提交对象的简短哈希字串%T树对象(tree)的完整哈希字串%t树对象的简短哈希字串%P父对象(parent)的完整哈希字串%p父对象的简短哈希字串%an作者(author)的名字