一、git配置
1.1 查看git配置信息
#查看所有配置信息
git config --list
#查看某一项配置信息
git config <key>
1.2 修改配置信息
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
1.3 获取帮助
git help
git --help
git help config
二、git基础
2.1 获取git仓库(初始化)
git init
2.2 添加文件
git add <name>
补充:*可模糊匹配,如git add *.md
2.3 提交文件
git commit -m 'init file'
2.4 克隆仓库
git clone <url>
补充:git clone <url> <文件夹名> 克隆到指定文件夹
2.5 查看当前文件状态
git status
补充:git status <file> 查看某个文件状态
git status <-s或者--short> 简短输出
2.6 查看修改点
#比较的是工作目录中当前文件和暂存区域快照之间的差异
git diff
补充:git diff --staged或者--cached 查看已暂存将提交的内容差异
2.7 提交文件
#提交暂存区的快照
git commit
补充:git commit -m <messages> 提交文件加备注
git commit -a -m <messages> 已暂存的文件不添加就提交
2.8 移除文件
#工作目录中删除
git rm <file>
#从 Git 仓库中删除(亦即从暂存区域移除)
git rm --cached <file>
补充:git rm -f <file> 强制删除
git rm log/\*.log 删除log目录下**.log文件
2.9 移动文件
#重命名
git mv file_from file_to
补充说明:相当于执行 mv README.md README、git rm README.md、git add README三条命令
2.10 查看提交历史
git log
补充:git log -p -2 -p显示每次提交的内容差异 -2显示最近两次提交
git log --stat 每次提交的简略的统计信息
git log --pretty=oneline 单行显示,short,full 和 fuller
git log --pretty=format format可以定制要显示的记录格式,如: git log --pretty=format:"%h - %an, %ar : %s"
format常用选项
%H
提交对象(commit)的完整哈希字串
%h
提交对象的简短哈希字串
%T
树对象(tree)的完整哈希字串
%t
树对象的简短哈希字串
%P
父对象(parent)的完整哈希字串
%p
父对象的简短哈希字串
%an
作者(author)的名字
%ae
作者的电子邮件地址
%ad
作者修订日期(可以用 --date= 选项定制格式)
%ar
作者修订日期,按多久以前的方式显示
%cn
提交者(committer)的名字
%ce
提交者的电子邮件地址
%cd
提交日期
%cr
提交日期,按多久以前的方式显示
%s
提交说明
git log常用选项
-p
按补丁格式显示每个更新之间的差异。
--stat
显示每次更新的文件修改统计信息。
--shortstat
只显示 --stat 中最后的行数修改添加移除统计。
--name-only
仅在提交信息后显示已修改的文件清单。
--name-status
显示新增、修改、删除的文件清单。
--abbrev-commit
仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。
--relative-date
使用较短的相对时间显示(比如,“2 weeks ago”)。
--graph
显示 ASCII 图形表示的分支合并历史。
--pretty
使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。
-(n)
仅显示最近的 n 条提交
--since, --after
仅显示指定时间之后的提交。
--until, --before
仅显示指定时间之前的提交。
--author
仅显示指定作者相关的提交。
--committer
仅显示指定提交者相关的提交。
--grep
仅显示含指定关键字的提交
-S
仅显示添加或移除了某个关键字的提交
2.11 撤销操作
#重新将忘提交的文件重新提交
git commit --amend
#撤销对文件的修改
git checkout -- <file>
2.12 取消暂存的文件
#你已经修改了两个文件并且想要将它们作为两次独立的修改提交
git reset HEAD <file>
2.13 远程仓库的使用
2.13.1 查看远程仓库
git remote
补充:git remote -v 查看协作者的贡献
2.13.2 添加远程仓库
git remote add <shortname> <url>
2.13.3 从远程仓库中拉取
git fetch <remote-name>
2.13.4 推送到远程仓库
git push <remote-name> <branch-name>
2.13.5 查看远程仓库
git remote show <remote-name>
2.13.6 远程仓库的移除和重命名
#重命名
git remote rename from_name to_name
#移除
git remote rm <name>
2.14 打标签
标签分为轻量标签(lightweight)与附注标签(annotated)。
轻量标签很像一个不会改变的分支,它只是一个特定提交的引用。
附注标签是存储在 Git 数据库中的一个完整对象。
2.14.1 查看标签列
git tag
2.14.2 创建附注标签和轻量标签
#附注标签,需要加-a -m等参数
git tag -a <v0.1> -m "messages"
#轻量标签,无需加参数
git tag <version>
#后期打标签
git tag <version> <hashcode>
2.14.3 查看标签和对应的提交信息
git show <version>
2.14.4 共享标签
git push origin <tagname>
#推送很多标签
git push origin --tags
2.14.5 删除标签
#删除本地标签
git tag -d <tagname>
#更新远程标签(首先删除本地的标签,再删除远程标签)
git push <remote> :refs/tags/<tagname>
2.14.6 检出标签
git checkout <tagname>
#在“分离头指针”状态下,如果你做了某些更改然后提交它们,标签不会发生变化,但你的新提交将不属于任何分支,并且将无法访问,除非确切的提交哈希。因此,如果你需要进行更改——比如说你正在修复旧版本的错误——这通常需要创建一个新分支:
git chekout -b <new-branch-name>
2.15 git别名
2.15.1 创建别名
$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status
三、git分支
3.1 创建分支并切换到新分支
git checkout -b <new-branch-name>
补充:实际为git branch <new-branch>和git cheoutout new-branch两条命令简写
3.2 切换分支
git checkout <branch>
3.3 合并分支
#(1)首先切换到master分支
git checkout master
#(2)执行合并
git merge <branch-name>
3.4 删除分支
git branch -d <branch-name>
3.5 查看分支列表
git branch
补充:git branch -v 查看每一个分支的最后一次提交
git branch --merged 查看哪些分支已经合并到当前分支
git branch --no-merged 查看所有包含未合并工作的分支
3.6 rebase(变基)
git rebase <branch-name>