>[success] # git 基本指令
1. `git clone`: 克隆远程代码到本地
* `git clone xxxx` 具体仓库克隆下来代码,文件夹名词就是当前对应仓库
* `git clone xxxx 本地自定义项目名`,克隆下的代码根目录文件名为自定义
2. `git pull` : 拉取远程代码到本地
3. `git status` :查看当前 `git` 状态
* **Untracked files(未跟踪的文件)**,未跟踪的文件意味着 Git 在之前的提交中没有这些文件,Git 不会自动将之纳入跟踪范围需要手动将文件纳入追踪状态
* 加简洁的状态信息`git status –s` 或 `git status --short`


4. `git add`:开始跟踪一个文件(将文件放入到暂存区中)
* `git add 文件名` 放入指定文件到暂存区
* `git add .` 直接把工作目录下的所有改动全部放进暂存区
* add也支持匹配表达式,如```add \*.java```
5. `git commit`:文件更新提交 将暂存区文件提交到本地仓库
* `git commit –m "提交信息"` 添加提交信息提交
* `git commit` 通过vi 编译器编写备注内容
* `git commit -a -m "修改了bbb文件"`,能提交修改过,但是没有添加到缓存区的文件(修改过的就能提交)也就是不用先执行 `git add`
6. `git push` : 提交本地代码到远程
7. `git log`: 产看提交日志
* `git log` 查看历史提交的日志
* `git log --oneline` 可以看到简洁版的日志

* `git log --graph` 图形状的日志

* `git log --all --graph --oneline` 图形状的日志简洁版(all 查看所有分支)

* `git log -p` 是`--patch`的缩写,通过`-p`参数,你可以看到具体每个`commit`的改动细节

8. `git show xxx`,xxx 是 `commit` 号 可以查看某次提交的具体更改,入股忽略xxx 即为当前`commit`(`git show 5e68b0d8 具体一个文件
`)

>[danger] ##### 比较区域差异指令
1. `git diff --staged` -- 可以显示输入`git commit`,你将会提交什么
2. `git diff` -- 可以显示**工作目录**和**暂存区**之间的**不同**,也就是执行`git add . `
3. `git diff HEAD` -- 比对工作目录和上一条提交

>[danger] ##### git pull 说明
**从远程仓库fetch代码:从远程仓库获取最新的代码**,默认情况下是从`origin`中获取代码;`git fetch`默认情况下是从`origin`中获取代码`git fetch origin`,获取到代码后默认并没有合并到本地仓库,我们需要通过`merge`来合并 `git merge` 实际上` git pull` 等于`git fetch + git merge(rebase)`
>[success] # 指令速查
