Git Pro 第二版: https://www.gitbook.com/book/bingohuang/progit2/details
1. 基础配置
1) 用户名和邮件地址
$git config --system user.name "user name"
$git config --system user.email "email@email.com"
--system 代表的是全局配置,即系统中所有用户的配置相应的配置文件为 /etc/gitconfig
--global 代表当前用户配置, 配置文件为 ~/.gitconfig 或 ~/.config/git/config
不加参数 代表当前Git项目配置, 配置文件为.git/config
级别 .git/config > ~/.gitconfig > /etc/gitconfig
2) 配置编辑器
$git config --global core.editor emacs
默认使用VIM, --global 含义通上
3) 别名
$git config --global alias.co checkout
$git config --global alias.ci commit
$git config --global alias.br branch
$git config --global alias.unstage 'reset HEAD --'
$git config --global alias.last 'log - 1 head'
4) 查看配置信息
$git config --list
2.仓库操作
1) 初始化
a. $git init 初始化本地git 仓库, 项目目录下会新增.git 文件夹, 但此时并没有跟踪项目中的任何文件 需要使用 $git add 命令跟踪项目文件和$git commit 命令将已缓存的文件添加到本地仓库中
b. $git clone [url] 将默认配置下的远程仓库clone到本地
3.文件操作
1) 检查当前文件状态
$git status
简写举例
$git status -s
M README
MM Makefile
A lib/git.rb
M lib/simplegit.rb
?? LICENSE.txt
?? 代表新增但未跟踪
A 新添并加到暂存区
左M 修改了并且放到了暂存区
右M 修改了但未放到暂存区
2) 跟踪新文件/暂存已修改文件
$git add 文件/目录
3) 忽略文件
修改 项目目录下的.gitignore文件(没有新建一个)
$cat .gitignore
*.[ao] # 忽略.a 和.o 结尾的文件
*.~ # 忽略~结尾的文件
######################################################################################
.gitignore 文件格式规范:
*所有空行或者#开头的行都会被Git 忽略
*可以使用标准的glob模式匹配
*匹配模式可以以 “/” 开头防止递归, 如 /some 仅仅忽略当前目录下的some文件
*匹配模式可以以 “/”结尾指定目录
*要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号( ! )取反。
4) 文件更改内容
只查询为暂存的差异
$git diff
以暂存的将要添加到下次提交里的内容
$git diff --staged 或 $git diff --cached
注意 Git不同于SVN的每次存储与初始版本的差异, 而是随时间改变的文件的快照
5) 提交文件
仅提交已暂存的文件
$git commit
SHELL 环境变量$EDITOR 所指定的编辑器会被打开以便输入提交说明, 它会显示以下信息
如果想要更详细的对修改了哪些内容的提示,可以用-v 选项,这会将你所做的改变的 diff 输出放到编辑器中从而使你知道本次提交具体做了哪些修改,退出编辑器时,Git会丢掉注释行, 用你输入的提交附带信息完成一次提交。可以使用 -m 选项将提交信息与提交命令放在同一行:
$git commit -m "message"
使用-a 选项提交所有暂存过的文件
$git commit -a -m "message"
6) 移除文件
从跟踪文件和工作目录中一并删除文件
$git rm filename
如果删除之前修改过并且已发到暂存区域,则必须使用 -f 选项
使用 --cached 选项把文件仅仅从Git仓库中移除, 如:
$git rm --cached log/\*.log
7) 移动文件
$git mv file1 file2
本质上
$mv file1 file2
$git rm file1
$git add file2
8) 查看提交历史
按提交时间列出所有更新, 最近的更新会排在最上面
$git log
使用-p显示每次提交的差异, -n 显示最近 n次提交
$git log -p -2
使用 --stat 选项 查看每次提交的统计信息
$git log --stat
使用 --pretty 选项自定已输出格式,如:
$git log --pretty=format:"%h - %an, %ar : %s "
format或online 选项与 --graph结合使用可以形象的展示出分支 合并历史
$git log --pretty=format:"%h %s" --graph
限制 log 输出选项 --since, --after, --until, --before, --author, --commiter, --grep...
详细参见 Git Pro
9) 取消操作
重新提交
$git commit --amend
取消暂存
$git reset HEAD filename
撤销修改
$git checkout -- filename